/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sys.screen;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.SwingConstants;
import javax.swing.SwingWorker;
import javax.swing.ToolTipManager;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import org.ini4j.Ini;
import org.ini4j.Wini;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import sys.bean.FormaPgtoBean;
import sys.bean.MovimentacaoBean;
import sys.bean.PedidoBean;
import sys.bean.UsuarioBean;
import sys.bean.ValeMercadoriaBean;
import sys.dao.FormaPgtoDao;
import sys.dao.MovimentacaoDao;
import sys.dao.PedidoDao;
import sys.dao.UsuarioDao;
import sys.dao.ValeMercadoriaDao;
import sys.utils.FileConfig;
import sys.utils.Mensagens;
import sys.utils.Singleton;
import sys.utils.Utils;
import static sys.utils.Utils.calcDiasTrabalhados;
import static sys.utils.Utils.dirFileCalcs;
import static sys.utils.Utils.numParaCalculos;

/**
 *
 * @author Administrador
 */
public class UIRelatorioVendas extends javax.swing.JFrame {

    private final int defaultDismissTimeout = ToolTipManager.sharedInstance().getDismissDelay();
    Wini wini = null;
    Ini ini = null;

    private List<UsuarioBean> listaVendedores;
    private List<FormaPgtoBean> listaFPgto;

    List<PedidoBean> totCustoPedido;
    List<PedidoBean> totVendaPedido;
    List<ValeMercadoriaBean> totVendaVale;
    List<MovimentacaoBean> totCustoVale;
    List<PedidoBean> totDescontoRecebimento;
    List<PedidoBean> totAcrescimoBoleto;

    SimpleDateFormat formDataSpac = new SimpleDateFormat("yyyyMMdd");
    SimpleDateFormat formDataBr = new SimpleDateFormat("dd/MM/yyyy");
    NumberFormat formatoMoeda = NumberFormat.getCurrencyInstance();
    String idVendedor = "";
    String idFormaPgto = "";

    double vTotal = 0; //valor total de venda no período
    double vFinal = 0; //valor final de vendas
    double vCusto = 0; //valor de custo
    double vCustoFinal = 0; //custo menos o valor de custo dos vales
    double vValeVenda = 0; //valor total de vale do periodo
    double vValeCusto = 0; //valor total de vale do periodo
    double vAcrescimoBoleto = 0; //valor total de acrescimo de boleto
    double vDescontoRecebimento = 0; //valor total de desconto norecebimento
    int dTrab = 0; //dias trabalhados no período

    /*
     *INICIO -  Determinando parametros que estão salvos no arquivo SPManager.ini
     */
    public static String bloco = ""; //bloco utilizado (serve para saber qual empresa foi selecionada
    double metaEmpresa = 0; // parametro com o valor de meta da empresa
    double metaVendedor = 0; // parametro com o valor de meta do vendedor
    String diasUteis = ""; // Dias uteis do mês

    /*
     Opção de exibição no gráfico. 
     0 - Exibe todos que efetuaram vendas no sistema
     1 - Exibe apenas os vendedores que efetuaram vendas no sistema
     2 - Exibe apenas usuários que não estão cadastrados como vendedores no sistema
     */
    String exibeGrafico = "";

    /*
     *FIM -  Determinando parametros que estão salvos no arquivo SPManager.ini
     */
    public UIRelatorioVendas() {
        initComponents();
        setExtendedState(MAXIMIZED_BOTH);
        carregaBloco();
        paramInicial();
        txDiasUteis.setText(diasUteis);
        this.setIconImage(new ImageIcon(getClass().getResource("/sys/picture/icon.png")).getImage());
        UIManager.put("Table.alternateRowColor", new java.awt.Color(230, 255, 255));
        dataInicial.setDate(new Date());
        dataFinal.setDate(new Date());
        lbDiasUteis.setText("DIAS TRAB. / UTEIS: " + formDataBr.format(dataInicial.getDate()).substring(3));
        cbFPgto.setEnabled(false);
        analisaOpcoes();
    }

    private void carregaBloco() {
        bloco = Singleton.getBloco();
    }

    public String formatoMoeda(double valor) {
        return formatoMoeda.format(valor).replace("R$", "");
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jpGeral = new javax.swing.JPanel();
        jpDados = new javax.swing.JPanel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        dataInicial = new com.toedter.calendar.JDateChooser("dd/MM/yyyy", "##/##/#####", '_');
        dataFinal = new com.toedter.calendar.JDateChooser("dd/MM/yyyy", "##/##/#####", '_');
        cbVendedor = new javax.swing.JComboBox();
        cbFPgto = new javax.swing.JComboBox();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        btnGerar = new javax.swing.JButton();
        cbPedidos = new javax.swing.JCheckBox();
        cbOrcamentos = new javax.swing.JCheckBox();
        jpDepempenho = new javax.swing.JPanel();
        jLabel6 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        txTotalCusto = new javax.swing.JTextField();
        jLabel8 = new javax.swing.JLabel();
        txMediaDiaria = new javax.swing.JTextField();
        txEstimativa = new javax.swing.JTextField();
        jLabel10 = new javax.swing.JLabel();
        txRentabilidade = new javax.swing.JTextField();
        txDiasTrabalhados = new javax.swing.JTextField();
        txDiasUteis = new javax.swing.JTextField();
        lbDiasUteis = new javax.swing.JLabel();
        txTotalVenda = new javax.swing.JTextField();
        lbTotal = new javax.swing.JLabel();
        jLabel15 = new javax.swing.JLabel();
        txTotalDescontos = new javax.swing.JTextField();
        jLabel9 = new javax.swing.JLabel();
        txMeta = new javax.swing.JTextField();
        jLabel16 = new javax.swing.JLabel();
        txValorLucro = new javax.swing.JTextField();
        jLabel11 = new javax.swing.JLabel();
        txTotalVale = new javax.swing.JTextField();
        jLabel17 = new javax.swing.JLabel();
        txAcrescimoBoleto = new javax.swing.JTextField();
        lbSoma = new javax.swing.JLabel();
        jTabbedPane = new javax.swing.JTabbedPane();
        jpVendas = new javax.swing.JPanel();
        jpGrafVendas = new javax.swing.JPanel();
        jpGrafRentabilidade = new javax.swing.JPanel();
        jpGrafRentabilidadeValor = new javax.swing.JPanel();
        jpTabela = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tabelaVendas = new javax.swing.JTable();
        jPanelMedia = new javax.swing.JPanel();
        jpGrafMedia = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        tabelaVendedores = new javax.swing.JTable();
        jLabel12 = new javax.swing.JLabel();
        jLabel13 = new javax.swing.JLabel();
        jpCresAnual = new javax.swing.JPanel();
        jpPedidos = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("RELATÓRIO DE VENDAS");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        jpGeral.setBackground(new java.awt.Color(255, 255, 255));

        jpDados.setBackground(new java.awt.Color(255, 255, 255));
        jpDados.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "SELECIONE DADOS:", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Calibri", 0, 10))); // NOI18N

        jLabel2.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel2.setText("DATA INICIAL:");

        jLabel3.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel3.setText("DATA FINAL:");

        dataInicial.setBackground(new java.awt.Color(204, 204, 204));
        dataInicial.setFont(new java.awt.Font("Calibri", 0, 12)); // NOI18N

        dataFinal.setBackground(new java.awt.Color(204, 204, 204));
        dataFinal.setFont(new java.awt.Font("Calibri", 0, 12)); // NOI18N

        cbVendedor.setFont(new java.awt.Font("Calibri", 0, 12)); // NOI18N
        cbVendedor.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "<< TODOS OS VENDEDORES >>" }));

        cbFPgto.setFont(new java.awt.Font("Calibri", 0, 12)); // NOI18N
        cbFPgto.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "<< TODAS AS FORMAS DE PGTO >>" }));

        jLabel4.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel4.setText("VENDEDOR:");

        jLabel5.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel5.setText("FORMA DE PAGAMENTO:");

        btnGerar.setBackground(new java.awt.Color(255, 255, 255));
        btnGerar.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N
        btnGerar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sys/picture/find.png"))); // NOI18N
        btnGerar.setText("GERAR");
        btnGerar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGerarActionPerformed(evt);
            }
        });

        cbPedidos.setBackground(new java.awt.Color(255, 255, 255));
        cbPedidos.setFont(new java.awt.Font("Calibri", 0, 12)); // NOI18N
        cbPedidos.setSelected(true);
        cbPedidos.setText("PEDIDOS");
        cbPedidos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbPedidosActionPerformed(evt);
            }
        });

        cbOrcamentos.setBackground(new java.awt.Color(255, 255, 255));
        cbOrcamentos.setFont(new java.awt.Font("Calibri", 0, 12)); // NOI18N
        cbOrcamentos.setText("ORÇAMENTOS");
        cbOrcamentos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbOrcamentosActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jpDadosLayout = new javax.swing.GroupLayout(jpDados);
        jpDados.setLayout(jpDadosLayout);
        jpDadosLayout.setHorizontalGroup(
            jpDadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpDadosLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jpDadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jLabel5)
                    .addComponent(cbVendedor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jLabel4)
                    .addGroup(jpDadosLayout.createSequentialGroup()
                        .addComponent(cbPedidos)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(cbOrcamentos, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(cbFPgto, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jpDadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jpDadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jpDadosLayout.createSequentialGroup()
                            .addComponent(jLabel3)
                            .addGap(71, 71, 71))
                        .addComponent(jLabel2)
                        .addGroup(jpDadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(dataInicial, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(btnGerar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 103, Short.MAX_VALUE)))
                    .addComponent(dataFinal, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE)))
        );
        jpDadosLayout.setVerticalGroup(
            jpDadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpDadosLayout.createSequentialGroup()
                .addGap(3, 3, 3)
                .addGroup(jpDadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(jLabel2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jpDadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(cbVendedor)
                    .addComponent(dataInicial, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(8, 8, 8)
                .addGroup(jpDadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jpDadosLayout.createSequentialGroup()
                        .addComponent(jLabel5)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))
                    .addGroup(jpDadosLayout.createSequentialGroup()
                        .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(4, 4, 4)))
                .addGroup(jpDadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(dataFinal, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(cbFPgto))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jpDadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnGerar)
                    .addComponent(cbPedidos)
                    .addComponent(cbOrcamentos))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jpDepempenho.setBackground(new java.awt.Color(255, 255, 255));
        jpDepempenho.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "ANALISE DE DESEMPENHO:", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Calibri", 0, 10))); // NOI18N

        jLabel6.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel6.setText("MÉDIA DIÁRIA:");

        jLabel7.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel7.setText("ESTIMATIVA:");

        txTotalCusto.setEditable(false);
        txTotalCusto.setBackground(new java.awt.Color(245, 245, 245));
        txTotalCusto.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N
        txTotalCusto.setForeground(new java.awt.Color(51, 51, 255));
        txTotalCusto.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        txTotalCusto.setToolTipText("<html>\n\tTotal de custo\n</html>");
        txTotalCusto.setBorder(null);

        jLabel8.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel8.setText("TOTAL DE CUSTO:");

        txMediaDiaria.setEditable(false);
        txMediaDiaria.setBackground(new java.awt.Color(245, 245, 245));
        txMediaDiaria.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N
        txMediaDiaria.setForeground(new java.awt.Color(51, 51, 255));
        txMediaDiaria.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        txMediaDiaria.setToolTipText("<html>\n\tTotal de vendas / pela quantidade de dias trabalhados\n</html>");
        txMediaDiaria.setBorder(null);

        txEstimativa.setEditable(false);
        txEstimativa.setBackground(new java.awt.Color(245, 245, 245));
        txEstimativa.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N
        txEstimativa.setForeground(new java.awt.Color(51, 51, 255));
        txEstimativa.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        txEstimativa.setToolTipText("<html>\n\tMédia diária de venda * Quantidade de dias úteis do mês\n</html>");
        txEstimativa.setBorder(null);

        jLabel10.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel10.setText("RENTABILIDADE MG/MK:");

        txRentabilidade.setEditable(false);
        txRentabilidade.setBackground(new java.awt.Color(245, 245, 245));
        txRentabilidade.setFont(new java.awt.Font("Calibri", 1, 12)); // NOI18N
        txRentabilidade.setForeground(new java.awt.Color(0, 153, 102));
        txRentabilidade.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        txRentabilidade.setToolTipText("<html>\n\tMetodo utilizado para chegar a rentabilidade:<br>\n\tPego o total de venda<br>\n\tPego o total de custo<br>\n\tPego o total de vale mercadoria (preco de venda)<br>\n\tPego o total de vale mercadoria (preco de custo)<br>\n\tdesconto os acréscimos de boleto na venda<br>\n\tdesconto os vales mercadorias (preço de venda) da venda<br>\n\tdesconto os vales mercadorias (preço de custo) do custo<br>\n\taplico esse cálculo: ((valorVenda - valorCusto) / valorVenda) * 100)<br>\n</html>");
        txRentabilidade.setBorder(null);
        txRentabilidade.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                txRentabilidadeMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                txRentabilidadeMouseExited(evt);
            }
        });

        txDiasTrabalhados.setEditable(false);
        txDiasTrabalhados.setBackground(new java.awt.Color(245, 245, 245));
        txDiasTrabalhados.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N
        txDiasTrabalhados.setForeground(new java.awt.Color(51, 51, 255));
        txDiasTrabalhados.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        txDiasTrabalhados.setToolTipText("<html>\n\tDias trabalhados no período\n</html>");
        txDiasTrabalhados.setBorder(null);
        txDiasTrabalhados.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                txDiasTrabalhadosMouseClicked(evt);
            }
        });

        txDiasUteis.setBackground(new java.awt.Color(245, 245, 245));
        txDiasUteis.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N
        txDiasUteis.setForeground(new java.awt.Color(51, 51, 255));
        txDiasUteis.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        txDiasUteis.setToolTipText("<html>\n\tDias úteis do mês, <br>\n\tesse valor é configurado nos parâmetros\n</html>");
        txDiasUteis.setBorder(null);
        txDiasUteis.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                txDiasUteisMouseClicked(evt);
            }
        });
        txDiasUteis.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txDiasUteisKeyReleased(evt);
            }
        });

        lbDiasUteis.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        lbDiasUteis.setText("DIAS TRAB. /UTEIS: ");

        txTotalVenda.setEditable(false);
        txTotalVenda.setBackground(new java.awt.Color(245, 245, 245));
        txTotalVenda.setFont(new java.awt.Font("Calibri", 1, 14)); // NOI18N
        txTotalVenda.setForeground(new java.awt.Color(0, 204, 255));
        txTotalVenda.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        txTotalVenda.setToolTipText("<html>\n\tMetodo utilizado para chegar ao total de venda:<br>\n\tPego o total de venda bruto: (venda - desconto vendedor - desconto f. Pagto. +<br>\n \t acrescimo boleto + acrescimo gerente)<br>\n\tMenos os descontos concedidos no recebimento no caixa  <br>\n\tMenos o total de vale mercadoria <br>\n\tMenos o total de acréscimo de boleto<br>\n                     ________________________________________________\n\t<br>\n</html>");
        txTotalVenda.setBorder(null);
        txTotalVenda.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                txTotalVendaMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                txTotalVendaMouseExited(evt);
            }
        });

        lbTotal.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        lbTotal.setText("TOTAL VENDA LIQUIDO:");

        jLabel15.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel15.setText("TOTAL DESCONTOS:");

        txTotalDescontos.setEditable(false);
        txTotalDescontos.setBackground(new java.awt.Color(245, 245, 245));
        txTotalDescontos.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N
        txTotalDescontos.setForeground(new java.awt.Color(51, 51, 255));
        txTotalDescontos.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        txTotalDescontos.setToolTipText("<html>\n\tTotal de descontos concedidos em caixa, são eles:<br>\n\tCliente que comprou e veio pagar adiantado, assim é concedido desconto.<br>\n\tPedidos arredondados quando caixa recebe o pedido, por exemplo: <br>\n\tpedido de R$ 20,38 - Quando recebido no caixa, é concedido o desconto de R$ 0,08<br>\n\tO preço final do pedido será R$ 20,30\n</html>");
        txTotalDescontos.setBorder(null);
        txTotalDescontos.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                txTotalDescontosMouseClicked(evt);
            }
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                txTotalDescontosMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                txTotalDescontosMouseExited(evt);
            }
        });

        jLabel9.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel9.setText("META DO MÊS:");

        txMeta.setEditable(false);
        txMeta.setBackground(new java.awt.Color(245, 245, 245));
        txMeta.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N
        txMeta.setForeground(new java.awt.Color(51, 51, 255));
        txMeta.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        txMeta.setToolTipText("<html>\n\tMeta para o mês atual, <br>\n\tesse valor é configurado nos parâmetros\n</html>");
        txMeta.setBorder(null);

        jLabel16.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel16.setText("LUCRO LIQUIDO:");

        txValorLucro.setEditable(false);
        txValorLucro.setBackground(new java.awt.Color(245, 245, 245));
        txValorLucro.setFont(new java.awt.Font("Calibri", 1, 13)); // NOI18N
        txValorLucro.setForeground(new java.awt.Color(0, 153, 0));
        txValorLucro.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        txValorLucro.setToolTipText("<html>\n\tTotal de venda liquido menos o custo\n</html>");
        txValorLucro.setBorder(null);

        jLabel11.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel11.setText("TOTAL DE VALES:");

        txTotalVale.setEditable(false);
        txTotalVale.setBackground(new java.awt.Color(245, 245, 245));
        txTotalVale.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N
        txTotalVale.setForeground(new java.awt.Color(51, 51, 255));
        txTotalVale.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        txTotalVale.setToolTipText("<html>\n\tTotal de Vale Mercadoria emitido, ou seja, <br>\n\tDevolução de produtos vendidos.\n</html>");
        txTotalVale.setBorder(null);
        txTotalVale.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                txTotalValeMouseClicked(evt);
            }
        });

        jLabel17.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel17.setText("TOTAL DE ACRÉS. BOLETO:");

        txAcrescimoBoleto.setEditable(false);
        txAcrescimoBoleto.setBackground(new java.awt.Color(245, 245, 245));
        txAcrescimoBoleto.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N
        txAcrescimoBoleto.setForeground(new java.awt.Color(51, 51, 255));
        txAcrescimoBoleto.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        txAcrescimoBoleto.setToolTipText("<html>\n\tTotal de acréscimo de boleto incluido pelos vendedores na venda:<br>\n\tR$ 3,00, R$ 6,00, R$ 9,00...\n</html>");
        txAcrescimoBoleto.setBorder(null);

        lbSoma.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N
        lbSoma.setForeground(new java.awt.Color(204, 0, 255));
        lbSoma.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

        javax.swing.GroupLayout jpDepempenhoLayout = new javax.swing.GroupLayout(jpDepempenho);
        jpDepempenho.setLayout(jpDepempenhoLayout);
        jpDepempenhoLayout.setHorizontalGroup(
            jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpDepempenhoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jpDepempenhoLayout.createSequentialGroup()
                        .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel8)
                            .addComponent(txTotalCusto, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(txMediaDiaria, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel6))
                        .addGap(6, 6, 6)
                        .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jpDepempenhoLayout.createSequentialGroup()
                                .addComponent(jLabel17, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(lbDiasUteis, javax.swing.GroupLayout.DEFAULT_SIZE, 128, Short.MAX_VALUE))
                            .addGroup(jpDepempenhoLayout.createSequentialGroup()
                                .addComponent(txAcrescimoBoleto, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txDiasTrabalhados)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txDiasUteis))))
                    .addGroup(jpDepempenhoLayout.createSequentialGroup()
                        .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(txTotalVenda, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(lbTotal))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(txMeta, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(jpDepempenhoLayout.createSequentialGroup()
                                .addGap(1, 1, 1)
                                .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(txTotalVale, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(jpDepempenhoLayout.createSequentialGroup()
                                .addGap(1, 1, 1)
                                .addComponent(jLabel11)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(txRentabilidade)
                            .addGroup(jpDepempenhoLayout.createSequentialGroup()
                                .addComponent(jLabel10)
                                .addGap(0, 0, Short.MAX_VALUE))))
                    .addGroup(jpDepempenhoLayout.createSequentialGroup()
                        .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel16)
                            .addComponent(txValorLucro, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(6, 6, 6)
                        .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 102, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txEstimativa, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(6, 6, 6)
                        .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jpDepempenhoLayout.createSequentialGroup()
                                .addComponent(jLabel15)
                                .addGap(0, 0, Short.MAX_VALUE))
                            .addGroup(jpDepempenhoLayout.createSequentialGroup()
                                .addComponent(txTotalDescontos, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(lbSoma, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))
                .addContainerGap())
        );
        jpDepempenhoLayout.setVerticalGroup(
            jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpDepempenhoLayout.createSequentialGroup()
                .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jpDepempenhoLayout.createSequentialGroup()
                        .addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGap(1, 1, 1)
                        .addComponent(txRentabilidade, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jpDepempenhoLayout.createSequentialGroup()
                        .addComponent(jLabel9)
                        .addGap(1, 1, 1)
                        .addComponent(txMeta, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jpDepempenhoLayout.createSequentialGroup()
                        .addComponent(jLabel11)
                        .addGap(1, 1, 1)
                        .addComponent(txTotalVale, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jpDepempenhoLayout.createSequentialGroup()
                        .addComponent(lbTotal)
                        .addGap(1, 1, 1)
                        .addComponent(txTotalVenda, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jpDepempenhoLayout.createSequentialGroup()
                        .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(1, 1, 1)
                        .addComponent(txTotalCusto, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jpDepempenhoLayout.createSequentialGroup()
                        .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel6)
                            .addComponent(jLabel17)
                            .addComponent(lbDiasUteis))
                        .addGap(1, 1, 1)
                        .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(txMediaDiaria, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txAcrescimoBoleto, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txDiasTrabalhados, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txDiasUteis, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jLabel15))
                    .addComponent(jLabel16))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(txValorLucro, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jpDepempenhoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(txEstimativa, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(txTotalDescontos, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(lbSoma, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(143, 143, 143))
        );

        jTabbedPane.setBackground(new java.awt.Color(255, 255, 255));
        jTabbedPane.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jTabbedPane.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTabbedPaneMouseClicked(evt);
            }
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jTabbedPaneMousePressed(evt);
            }
        });

        jpVendas.setBackground(new java.awt.Color(255, 255, 255));
        jpVendas.setToolTipText("");
        jpVendas.setFont(new java.awt.Font("Calibri", 1, 12)); // NOI18N

        jpGrafVendas.setBackground(new java.awt.Color(255, 255, 255));

        javax.swing.GroupLayout jpGrafVendasLayout = new javax.swing.GroupLayout(jpGrafVendas);
        jpGrafVendas.setLayout(jpGrafVendasLayout);
        jpGrafVendasLayout.setHorizontalGroup(
            jpGrafVendasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 606, Short.MAX_VALUE)
        );
        jpGrafVendasLayout.setVerticalGroup(
            jpGrafVendasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );

        jpGrafRentabilidade.setBackground(new java.awt.Color(255, 255, 255));

        javax.swing.GroupLayout jpGrafRentabilidadeLayout = new javax.swing.GroupLayout(jpGrafRentabilidade);
        jpGrafRentabilidade.setLayout(jpGrafRentabilidadeLayout);
        jpGrafRentabilidadeLayout.setHorizontalGroup(
            jpGrafRentabilidadeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 519, Short.MAX_VALUE)
        );
        jpGrafRentabilidadeLayout.setVerticalGroup(
            jpGrafRentabilidadeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 211, Short.MAX_VALUE)
        );

        jpGrafRentabilidadeValor.setBackground(new java.awt.Color(255, 255, 255));

        javax.swing.GroupLayout jpGrafRentabilidadeValorLayout = new javax.swing.GroupLayout(jpGrafRentabilidadeValor);
        jpGrafRentabilidadeValor.setLayout(jpGrafRentabilidadeValorLayout);
        jpGrafRentabilidadeValorLayout.setHorizontalGroup(
            jpGrafRentabilidadeValorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );
        jpGrafRentabilidadeValorLayout.setVerticalGroup(
            jpGrafRentabilidadeValorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 309, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout jpVendasLayout = new javax.swing.GroupLayout(jpVendas);
        jpVendas.setLayout(jpVendasLayout);
        jpVendasLayout.setHorizontalGroup(
            jpVendasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpVendasLayout.createSequentialGroup()
                .addComponent(jpGrafVendas, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jpVendasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jpGrafRentabilidade, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jpGrafRentabilidadeValor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
        );
        jpVendasLayout.setVerticalGroup(
            jpVendasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jpGrafVendas, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(jpVendasLayout.createSequentialGroup()
                .addComponent(jpGrafRentabilidade, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jpGrafRentabilidadeValor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jTabbedPane.addTab("REL. DE VENDAS", new javax.swing.ImageIcon(getClass().getResource("/sys/picture/chart.png")), jpVendas); // NOI18N

        jpTabela.setBackground(new java.awt.Color(255, 255, 255));
        jpTabela.setToolTipText("");

        tabelaVendas.setAutoCreateRowSorter(true);
        tabelaVendas.setFont(new java.awt.Font("Calibri", 0, 12)); // NOI18N
        tabelaVendas.setForeground(new java.awt.Color(0, 0, 204));
        tabelaVendas.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "PEDIDO", "DATA", "VENDEDOR", "CODIGO", "CLIENTE", "FORMA PGTO", "BRUTO", "DESC. GER.", "DESC. FPGTO.", "DESC. ESP.", "ACRE. GER.", "ACRE. FPGTO.", "VALE", "LIQUIDO"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false, false, false, false, false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tabelaVendas.setGridColor(new java.awt.Color(204, 204, 204));
        tabelaVendas.getTableHeader().setReorderingAllowed(false);
        tabelaVendas.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tabelaVendasMouseClicked(evt);
            }
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                tabelaVendasMouseReleased(evt);
            }
        });
        tabelaVendas.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                tabelaVendasKeyReleased(evt);
            }
        });
        jScrollPane1.setViewportView(tabelaVendas);
        if (tabelaVendas.getColumnModel().getColumnCount() > 0) {
            tabelaVendas.getColumnModel().getColumn(0).setPreferredWidth(20);
            tabelaVendas.getColumnModel().getColumn(1).setPreferredWidth(20);
            tabelaVendas.getColumnModel().getColumn(3).setPreferredWidth(10);
            tabelaVendas.getColumnModel().getColumn(4).setPreferredWidth(210);
            tabelaVendas.getColumnModel().getColumn(7).setPreferredWidth(15);
            tabelaVendas.getColumnModel().getColumn(8).setPreferredWidth(15);
            tabelaVendas.getColumnModel().getColumn(9).setPreferredWidth(15);
            tabelaVendas.getColumnModel().getColumn(10).setPreferredWidth(15);
            tabelaVendas.getColumnModel().getColumn(11).setPreferredWidth(15);
            tabelaVendas.getColumnModel().getColumn(12).setPreferredWidth(15);
        }

        javax.swing.GroupLayout jpTabelaLayout = new javax.swing.GroupLayout(jpTabela);
        jpTabela.setLayout(jpTabelaLayout);
        jpTabelaLayout.setHorizontalGroup(
            jpTabelaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpTabelaLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 1111, Short.MAX_VALUE)
                .addContainerGap())
        );
        jpTabelaLayout.setVerticalGroup(
            jpTabelaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jpTabelaLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 504, Short.MAX_VALUE)
                .addContainerGap())
        );

        jTabbedPane.addTab("REL. EM TABELA", new javax.swing.ImageIcon(getClass().getResource("/sys/picture/table.png")), jpTabela); // NOI18N

        jPanelMedia.setBackground(new java.awt.Color(255, 255, 255));
        jPanelMedia.setToolTipText("");

        jpGrafMedia.setBackground(new java.awt.Color(255, 255, 255));

        javax.swing.GroupLayout jpGrafMediaLayout = new javax.swing.GroupLayout(jpGrafMedia);
        jpGrafMedia.setLayout(jpGrafMediaLayout);
        jpGrafMediaLayout.setHorizontalGroup(
            jpGrafMediaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 926, Short.MAX_VALUE)
        );
        jpGrafMediaLayout.setVerticalGroup(
            jpGrafMediaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );

        tabelaVendedores.setAutoCreateRowSorter(true);
        tabelaVendedores.setFont(new java.awt.Font("Calibri", 0, 12)); // NOI18N
        tabelaVendedores.setForeground(new java.awt.Color(51, 51, 255));
        tabelaVendedores.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "CODIGO", "DESCRICAO"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tabelaVendedores.setGridColor(new java.awt.Color(204, 204, 204));
        tabelaVendedores.getTableHeader().setReorderingAllowed(false);
        jScrollPane2.setViewportView(tabelaVendedores);
        if (tabelaVendedores.getColumnModel().getColumnCount() > 0) {
            tabelaVendedores.getColumnModel().getColumn(1).setPreferredWidth(200);
        }

        jLabel12.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel12.setText("PRESSIONE CTRL +  CLIQUE PARA");

        jLabel13.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel13.setText("SELECIONAR VENDEDORES E COMPARAR.");

        javax.swing.GroupLayout jPanelMediaLayout = new javax.swing.GroupLayout(jPanelMedia);
        jPanelMedia.setLayout(jPanelMediaLayout);
        jPanelMediaLayout.setHorizontalGroup(
            jPanelMediaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelMediaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanelMediaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 189, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel12)
                    .addComponent(jLabel13))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jpGrafMedia, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanelMediaLayout.setVerticalGroup(
            jPanelMediaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelMediaLayout.createSequentialGroup()
                .addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(1, 1, 1)
                .addComponent(jLabel13)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 478, Short.MAX_VALUE)
                .addContainerGap())
            .addComponent(jpGrafMedia, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        jTabbedPane.addTab("LINHA DO TEMPO VENDEDOR", new javax.swing.ImageIcon(getClass().getResource("/sys/picture/media.png")), jPanelMedia); // NOI18N

        jpCresAnual.setBackground(new java.awt.Color(255, 255, 255));

        javax.swing.GroupLayout jpCresAnualLayout = new javax.swing.GroupLayout(jpCresAnual);
        jpCresAnual.setLayout(jpCresAnualLayout);
        jpCresAnualLayout.setHorizontalGroup(
            jpCresAnualLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 1131, Short.MAX_VALUE)
        );
        jpCresAnualLayout.setVerticalGroup(
            jpCresAnualLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 526, Short.MAX_VALUE)
        );

        jTabbedPane.addTab("LINHA DO TEMPO EMPRESA", new javax.swing.ImageIcon(getClass().getResource("/sys/picture/line.png")), jpCresAnual); // NOI18N

        jpPedidos.setBackground(new java.awt.Color(255, 255, 255));

        javax.swing.GroupLayout jpPedidosLayout = new javax.swing.GroupLayout(jpPedidos);
        jpPedidos.setLayout(jpPedidosLayout);
        jpPedidosLayout.setHorizontalGroup(
            jpPedidosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );
        jpPedidosLayout.setVerticalGroup(
            jpPedidosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout jpGeralLayout = new javax.swing.GroupLayout(jpGeral);
        jpGeral.setLayout(jpGeralLayout);
        jpGeralLayout.setHorizontalGroup(
            jpGeralLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpGeralLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jpDados, javax.swing.GroupLayout.PREFERRED_SIZE, 348, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jpDepempenho, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jpPedidos, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGap(4, 4, 4))
            .addGroup(jpGeralLayout.createSequentialGroup()
                .addGap(10, 10, 10)
                .addComponent(jTabbedPane)
                .addGap(10, 10, 10))
        );
        jpGeralLayout.setVerticalGroup(
            jpGeralLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpGeralLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jpGeralLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jpPedidos, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jpDepempenho, javax.swing.GroupLayout.PREFERRED_SIZE, 158, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jpDados, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTabbedPane)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jpGeral, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jpGeral, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnGerarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGerarActionPerformed
        gerarRelatorio();
    }//GEN-LAST:event_btnGerarActionPerformed

    private void cbPedidosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbPedidosActionPerformed
        cbOrcamentos.setSelected(false);
        jpGrafRentabilidade.setVisible(true);
        jpGrafRentabilidadeValor.setVisible(true);
        jpGrafRentabilidade.removeAll();
        jpGrafRentabilidade.repaint();
        jpGrafRentabilidadeValor.removeAll();
        jpGrafRentabilidadeValor.repaint();
        jpPedidos.removeAll();
        jpPedidos.repaint();
        jpGrafVendas.removeAll();
        jpGrafVendas.repaint();
        limpaCampos();
    }//GEN-LAST:event_cbPedidosActionPerformed

    private void cbOrcamentosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbOrcamentosActionPerformed
        cbPedidos.setSelected(false);
        jpGrafRentabilidade.setVisible(false);
        jpGrafRentabilidadeValor.setVisible(false);
        jpPedidos.removeAll();
        jpPedidos.repaint();
        jpGrafVendas.removeAll();
        jpGrafVendas.repaint();
        limpaCampos();
    }//GEN-LAST:event_cbOrcamentosActionPerformed

    private void txDiasTrabalhadosMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_txDiasTrabalhadosMouseClicked
        //txEstimativa.setText(formatoMoeda.format(vMedia * Integer.parseInt(txDiasTrabalhados.getText())));
    }//GEN-LAST:event_txDiasTrabalhadosMouseClicked

    private void txDiasUteisMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_txDiasUteisMouseClicked
        //txEstimativa.setText(formatoMoeda.format(vMedia * Integer.parseInt(txDiasUteis.getText())));
    }//GEN-LAST:event_txDiasUteisMouseClicked

    private void txDiasUteisKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txDiasUteisKeyReleased
        // txEstimativa.setText(formatoMoeda.format(vMedia * Integer.parseInt(txDiasUteis.getText())));
    }//GEN-LAST:event_txDiasUteisKeyReleased

    private void tabelaVendasMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tabelaVendasMouseClicked

        if ((evt.getModifiers() & java.awt.event.MouseEvent.BUTTON3_MASK) != 0) {
            JPopupMenu menu = new JPopupMenu();
            JMenuItem menuAnaPedido = new JMenuItem("ANALISAR");
            menuAnaPedido.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sys/picture/find.png")));
            menuAnaPedido.setFont(new java.awt.Font("Calibri", 0, 12));

            JMenuItem menuAlteraVendedor = new JMenuItem("ALTERAR");
            menuAlteraVendedor.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sys/picture/edit.png")));
            menuAlteraVendedor.setFont(new java.awt.Font("Calibri", 0, 12));

            menu.add(menuAnaPedido);
            menu.add(menuAlteraVendedor);

            menuAnaPedido.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    chamaAnaPedidos();
                }
            });

            menuAlteraVendedor.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    alteraVendedor();
                }
            });

            menu.show(evt.getComponent(), evt.getX(), evt.getY());
        }
    }//GEN-LAST:event_tabelaVendasMouseClicked

    private void tabelaVendasMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tabelaVendasMouseReleased
        somaTabela();
    }//GEN-LAST:event_tabelaVendasMouseReleased

    private void tabelaVendasKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tabelaVendasKeyReleased
        somaTabela();
    }//GEN-LAST:event_tabelaVendasKeyReleased

    private void jTabbedPaneMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTabbedPaneMouseClicked
        analisaOpcoes();
    }//GEN-LAST:event_jTabbedPaneMouseClicked

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        UITelaPrincipal telaPrincipal = new UITelaPrincipal();
        telaPrincipal.carregaPermissoesUsuario(Singleton.getCodigo());
        telaPrincipal.setVisible(true);
    }//GEN-LAST:event_formWindowClosing

    private void jTabbedPaneMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTabbedPaneMousePressed
        analisaOpcoes();
    }//GEN-LAST:event_jTabbedPaneMousePressed

    private void txTotalVendaMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_txTotalVendaMouseEntered
        ToolTipManager.sharedInstance().setDismissDelay(60000);
    }//GEN-LAST:event_txTotalVendaMouseEntered

    private void txTotalVendaMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_txTotalVendaMouseExited
        ToolTipManager.sharedInstance().setDismissDelay(defaultDismissTimeout);
    }//GEN-LAST:event_txTotalVendaMouseExited

    private void txRentabilidadeMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_txRentabilidadeMouseEntered
        ToolTipManager.sharedInstance().setDismissDelay(60000);
    }//GEN-LAST:event_txRentabilidadeMouseEntered

    private void txRentabilidadeMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_txRentabilidadeMouseExited
        ToolTipManager.sharedInstance().setDismissDelay(defaultDismissTimeout);
    }//GEN-LAST:event_txRentabilidadeMouseExited

    private void txTotalValeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_txTotalValeMouseClicked
        if ((evt.getModifiers() & java.awt.event.MouseEvent.BUTTON3_MASK) != 0) {
            JPopupMenu menu = new JPopupMenu();
            JMenuItem menuAnaPedido = new JMenuItem("ANALISAR VALES");
            menuAnaPedido.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sys/picture/find.png")));
            menuAnaPedido.setFont(new java.awt.Font("Calibri", 0, 11));

            menu.add(menuAnaPedido);

            menuAnaPedido.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    carregaTelaVale();
                }
            });
            menu.show(evt.getComponent(), evt.getX(), evt.getY());
        }
    }//GEN-LAST:event_txTotalValeMouseClicked

    private void txTotalDescontosMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_txTotalDescontosMouseClicked
        if ((evt.getModifiers() & java.awt.event.MouseEvent.BUTTON3_MASK) != 0) {
            JPopupMenu menu = new JPopupMenu();
            JMenuItem menuAnaPedido = new JMenuItem("ANALISAR DESCONTOS");
            menuAnaPedido.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sys/picture/find.png")));
            menuAnaPedido.setFont(new java.awt.Font("Calibri", 0, 11));

            menu.add(menuAnaPedido);

            menuAnaPedido.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    carregaTelaDescontos();
                }
            });
            menu.show(evt.getComponent(), evt.getX(), evt.getY());
        }
    }//GEN-LAST:event_txTotalDescontosMouseClicked

    private void txTotalDescontosMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_txTotalDescontosMouseEntered
        ToolTipManager.sharedInstance().setDismissDelay(60000);
    }//GEN-LAST:event_txTotalDescontosMouseEntered

    private void txTotalDescontosMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_txTotalDescontosMouseExited
        ToolTipManager.sharedInstance().setDismissDelay(defaultDismissTimeout);
    }//GEN-LAST:event_txTotalDescontosMouseExited

    /*
     exibindo tela de vale mercadoria para uma analise sintética dos vales
     */
    private void carregaTelaVale() {
        UIVale vale = new UIVale(this, true, dataInicial.getDate(), dataFinal.getDate(), (cbVendedor.getSelectedIndex() - 1));
        vale.setVisible(true);
    }

    /*
     exibindo tela de desconto no recebimento para uma analise sintética dos descontos
     */
    private void carregaTelaDescontos() {
        UIAnalisaDescRecebimentos aDescontos = new UIAnalisaDescRecebimentos(this, true, dataInicial.getDate(), dataFinal.getDate(), (cbVendedor.getSelectedIndex() - 1));
        aDescontos.setVisible(true);
    }

    /*
     carregando dados para alterar vendedor
     */
    private void alteraVendedor() {
        UIAlteraPedido aPedido = new UIAlteraPedido(this, true);
        aPedido.carregaDados(
                tabelaVendas.getValueAt(tabelaVendas.getSelectedRow(), 0).toString(),
                tabelaVendas.getValueAt(tabelaVendas.getSelectedRow(), 2).toString(),
                tabelaVendas.getValueAt(tabelaVendas.getSelectedRow(), 3).toString() + "-"
                + tabelaVendas.getValueAt(tabelaVendas.getSelectedRow(), 4).toString()
        );
        aPedido.setVisible(true);
    }

    /*
     retorna P se pedido estiver selecionado e P se orçamento estiver selecionado
     */
    private String tPedido() {
        String tipo = "";
        if (cbPedidos.isSelected()) {
            tipo = "P";
        }
        if (cbOrcamentos.isSelected()) {
            tipo = "O";
        }
        return tipo;
    }

    private void limpaCampos() {
        txTotalVenda.setText("");
        txTotalCusto.setText("");
        txRentabilidade.setText("");
        txMediaDiaria.setText("");
        txEstimativa.setText("");
        txDiasTrabalhados.setText("");
        txDiasUteis.setText("");
        txMeta.setText("");
        txTotalDescontos.setText("");
        txValorLucro.setText("");
        txTotalVale.setText("");
        txAcrescimoBoleto.setText("");
    }

    private void paramInicial() {

        final BarraProgresso pb = new BarraProgresso(this);
        SwingWorker worker = new SwingWorker() {

            @Override
            protected Object doInBackground() throws Exception {
                pb.gerarJanela();
                pb.lbDescricao.setText("CARREGANDO VENDEDORES, AGUARDE...");
                loadParametersConfig();
                atuComboTabelaVend();

                pb.lbDescricao.setText("CARREGANDO FORMAS DE PGTO, AGUARDE...");
                atuComboFPgto();
                return null;
            }

            @Override
            protected void done() {
                pb.fechar();
            }
        };
        worker.execute();
    }

    /*
     foi necessário criar o método pois não é possível carregar tela de "carregando" diretamente
     */
    private void chamaAnaPedidos() {
        UIAnalisaPedidos uiap = new UIAnalisaPedidos(this, true);
        uiap.txPedido.setText(tabelaVendas.getValueAt(tabelaVendas.getSelectedRow(), 0).toString());
        uiap.setVisible(true);
    }

    /*
     analisa a posição do jtabbedPane e altera os campos de acordo com cada um
     */
    private void analisaOpcoes() {
        int opc = jTabbedPane.getSelectedIndex();
        if (opc == 0) {
            jTabbedPane.setSelectedIndex(0);
            jpDados.setEnabled(true);
            jpDepempenho.setEnabled(true);
            cbFPgto.setEnabled(true);
            cbVendedor.setEnabled(true);
            txTotalVenda.setEnabled(true);
            txTotalCusto.setEnabled(true);
            txMediaDiaria.setEnabled(true);
            txEstimativa.setEnabled(true);
            txDiasUteis.setEnabled(true);
            txDiasTrabalhados.setEnabled(true);
            txRentabilidade.setEnabled(true);
            txMeta.setEnabled(true);
            txTotalDescontos.setEnabled(true);
            txValorLucro.setEnabled(true);
            lbSoma.setText("");
            jpPedidos.setVisible(true);
            cbPedidos.setEnabled(true);
            cbOrcamentos.setEnabled(true);
            cbFPgto.setEnabled(false);
            cbFPgto.setSelectedIndex(0);
            txTotalVale.setEnabled(true);
            txAcrescimoBoleto.setEnabled(true);
        }
        if (opc == 1) {
            jTabbedPane.setSelectedIndex(1);
            jpDados.setEnabled(true);
            jpDepempenho.setEnabled(true);
            cbVendedor.setEnabled(true);
            cbFPgto.setEnabled(true);
            txTotalVenda.setEnabled(true);
            txTotalCusto.setEnabled(true);
            txMediaDiaria.setEnabled(true);
            txEstimativa.setEnabled(true);
            txDiasUteis.setEnabled(true);
            txDiasTrabalhados.setEnabled(true);
            txRentabilidade.setEnabled(true);
            txMeta.setEnabled(true);
            txTotalDescontos.setEnabled(true);
            txValorLucro.setEnabled(true);
            jpPedidos.setVisible(false);
            cbPedidos.setEnabled(true);
            cbOrcamentos.setEnabled(true);
            cbFPgto.setEnabled(true);
            txTotalVale.setEnabled(true);
            txAcrescimoBoleto.setEnabled(true);
        }
        if (opc == 2) {
            jTabbedPane.setSelectedIndex(2);
            jpDepempenho.setEnabled(false);
            cbVendedor.setEnabled(false);
            cbFPgto.setEnabled(false);
            txTotalVenda.setEnabled(false);
            txTotalCusto.setEnabled(false);
            txMediaDiaria.setEnabled(false);
            txEstimativa.setEnabled(false);
            txDiasUteis.setEnabled(false);
            txDiasTrabalhados.setEnabled(false);
            txRentabilidade.setEnabled(false);
            txMeta.setEnabled(false);
            txTotalDescontos.setEnabled(false);
            txValorLucro.setEnabled(false);
            lbSoma.setText("");
            jpPedidos.setVisible(false);
            cbPedidos.setSelected(true);
            cbOrcamentos.setSelected(false);
            cbPedidos.setEnabled(false);
            cbOrcamentos.setEnabled(false);
            txTotalVale.setEnabled(false);
            txAcrescimoBoleto.setEnabled(false);
        }
        if (opc == 3) {
            jTabbedPane.setSelectedIndex(3);
            jpDados.setEnabled(false);
            jpDepempenho.setEnabled(false);
            cbVendedor.setEnabled(false);
            cbFPgto.setEnabled(false);
            txTotalVenda.setEnabled(false);
            txTotalCusto.setEnabled(false);
            txMediaDiaria.setEnabled(false);
            txEstimativa.setEnabled(false);
            txDiasUteis.setEnabled(false);
            txDiasTrabalhados.setEnabled(false);
            txRentabilidade.setEnabled(false);
            txMeta.setEnabled(false);
            txTotalDescontos.setEnabled(false);
            txValorLucro.setEnabled(false);
            lbSoma.setText("");
            jpPedidos.setVisible(false);
            cbPedidos.setSelected(true);
            cbOrcamentos.setSelected(false);
            cbPedidos.setEnabled(false);
            cbOrcamentos.setEnabled(false);
            txTotalVale.setEnabled(false);
            txAcrescimoBoleto.setEnabled(false);
        }
    }

    /*
     carregando parametros do arquivo SPManager.ini
     */
    private void loadParametersConfig() {
        try {
            ini = new Ini(new File(Utils.dirFileConfig()));
            diasUteis = ini.get(bloco, "diasUteis");
            metaVendedor = Double.parseDouble(numParaCalculos(ini.get(bloco, "metaVendedor")));
            metaEmpresa = Double.parseDouble(numParaCalculos(ini.get(bloco, "metaEmpresa")));

            exibeGrafico = ini.get(bloco, "exibirGrafico");

        } catch (IOException ex) {
            Mensagens.msgErro("erro\n" + ex.getMessage());
        }
    }

    /*
     alimentando arrays de custo e de venda, pois são utilizados várias vezes no sistema
     se parametro passado for 0, a variavel exibeGrafico vai em branco, assim o sistema traz as vendas de todos os usuários (para totalizar valores de todos)
     se parametro for 1 select traz dados apenas dos usuários gravados no config.ini
     */
    private void carregandoDados() {

        try {
            idVendedor = "";
            idFormaPgto = "";

            if (cbVendedor.getSelectedIndex() != 0) {
                idVendedor = listaVendedores.get(cbVendedor.getSelectedIndex() - 1).getCodigo();
            }

            if (cbFPgto.getSelectedIndex() != 0) {
                idFormaPgto = listaFPgto.get(cbFPgto.getSelectedIndex() - 1).getCodigo();
            }

            dTrab = calcDiasTrabalhados(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()));

            //recriando o arquivo com todos os valores zerados
            FileConfig.createFileCalcs();

            if (cbPedidos.isSelected()) {

                totVendaPedido = PedidoDao.vendasGrafico(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()), idVendedor, tPedido());
                totCustoPedido = PedidoDao.totalCusto(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()), idVendedor, idFormaPgto, tPedido());
                totVendaVale = ValeMercadoriaDao.totalVendaVale(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()), idVendedor);
                totCustoVale = MovimentacaoDao.totalCustoVale(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()), idVendedor);
                totAcrescimoBoleto = PedidoDao.acrescimoBoleto(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()), idVendedor);
                totDescontoRecebimento = PedidoDao.descontoRecebimento(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()), idVendedor);

                for (PedidoBean p : totVendaPedido) {
                    try {
                        wini = new Wini();
                        String dir = dirFileCalcs();
                        File iniFile = new File(dir);

                        wini.load(iniFile);
                        wini.add(p.getUsuario().getNome(), "vVenda", p.getvFinal());
                        wini.store(iniFile);

                    } catch (IOException x) {
                        Mensagens.msgErro("erro\n" + x.getMessage());
                    }
                }

                for (PedidoBean p : totCustoPedido) {
                    try {
                        wini = new Wini();
                        String dir = dirFileCalcs();
                        File iniFile = new File(dir);

                        wini.load(iniFile);
                        wini.add(p.getUsuario().getNome(), "vCusto", p.getvCusto());
                        wini.store(iniFile);

                    } catch (IOException x) {
                        Mensagens.msgErro("erro\n" + x.getMessage());
                    }
                }

                for (ValeMercadoriaBean v : totVendaVale) {
                    try {
                        wini = new Wini();
                        String dir = dirFileCalcs();
                        File iniFile = new File(dir);

                        wini.load(iniFile);
                        wini.add(v.getUsuario().getNome(), "vValeVenda", v.getvVale());
                        wini.store(iniFile);

                    } catch (IOException x) {
                        Mensagens.msgErro("erro\n" + x.getMessage());
                    }
                }

                for (MovimentacaoBean m : totCustoVale) {
                    try {
                        wini = new Wini();
                        String dir = dirFileCalcs();
                        File iniFile = new File(dir);

                        wini.load(iniFile);
                        wini.add(m.getUsuario().getNome(), "vValeCusto", m.getValor());
                        wini.store(iniFile);

                    } catch (IOException x) {
                        Mensagens.msgErro("erro\n" + x.getMessage());
                    }
                }

                for (PedidoBean p : totAcrescimoBoleto) {
                    try {
                        wini = new Wini();
                        String dir = dirFileCalcs();
                        File iniFile = new File(dir);

                        wini.load(iniFile);
                        wini.add(p.getUsuario().getNome(), "vAcrescimo", p.getaGerente());
                        wini.store(iniFile);

                    } catch (IOException x) {
                        Mensagens.msgErro("erro\n" + x.getMessage());
                    }
                }

                for (PedidoBean p : totDescontoRecebimento) {
                    try {
                        wini = new Wini();
                        String dir = dirFileCalcs();
                        File iniFile = new File(dir);

                        wini.load(iniFile);
                        wini.add(p.getUsuario().getNome(), "vDesconto", p.getdGerente());
                        wini.store(iniFile);

                    } catch (IOException x) {
                        Mensagens.msgErro("erro\n" + x.getMessage());
                    }
                }
            } else {
                totVendaPedido = PedidoDao.vendasGrafico(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()), idVendedor, tPedido());
                totCustoPedido = PedidoDao.totalCusto(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()), idVendedor, idFormaPgto, tPedido());

                for (PedidoBean p : totVendaPedido) {
                    try {
                        wini = new Wini();
                        String dir = dirFileCalcs();
                        File iniFile = new File(dir);

                        wini.load(iniFile);
                        wini.add(p.getUsuario().getNome(), "vVenda", p.getvFinal());
                        wini.store(iniFile);

                    } catch (IOException x) {
                        Mensagens.msgErro("erro\n" + x.getMessage());
                    }
                }

                for (PedidoBean p : totCustoPedido) {
                    try {
                        wini = new Wini();
                        String dir = dirFileCalcs();
                        File iniFile = new File(dir);

                        wini.load(iniFile);
                        wini.add(p.getUsuario().getNome(), "vCusto", p.getvCusto());
                        wini.store(iniFile);

                    } catch (IOException x) {
                        Mensagens.msgErro("erro\n" + x.getMessage());
                    }
                }
            }

        } catch (SQLException | IOException ex) {
            Mensagens.msgErro("erro ao carregar dados de venda e custo\n" + ex.getMessage());
        }
    }

    /*
     metodo chamado quando mouse ou tecla passa na tabela.
     Soma o que tem na tabela e exibe o valor
     */
    private void somaTabela() {
        double soma = 0;
        int[] linhas = tabelaVendas.getSelectedRows();
        for (int i = 0; i < linhas.length; i++) {
            soma += Double.parseDouble(numParaCalculos(tabelaVendas.getValueAt(linhas[i], 13).toString()));
        }
        lbSoma.setText("SOMA " + formatoMoeda.format(soma));
    }

    /*
     metodo utilizado para totalizar os valores de venda, custo, rentabilidade entre outros. carrega nos campos textfields 
     */
    private void totalizaValores() {
        /*
         se pedido estiver selecionado carrega todos os campos normalmente.
         senao carrega apenas alguns campos, os outros ficam zerados
         */
        idVendedor = "";
        idFormaPgto = "";

        if (cbVendedor.getSelectedIndex() != 0) {
            idVendedor = listaVendedores.get(cbVendedor.getSelectedIndex() - 1).getCodigo();
        }
        if (cbFPgto.getSelectedIndex() != 0) {
            idFormaPgto = listaFPgto.get(cbFPgto.getSelectedIndex() - 1).getCodigo();
        }

        //PEDIDOS
        if (cbPedidos.isSelected()) {

            vTotal = 0;
            vCusto = 0;
            vValeVenda = 0;
            vValeCusto = 0;
            vAcrescimoBoleto = 0;
            vDescontoRecebimento = 0;

            for (UsuarioBean u : listaVendedores) {
                try {

                    ini = new Ini(new File(Utils.dirFileCalcs()));

                    vTotal += (Double.parseDouble(ini.get(u.getNome(), "vVenda")));
                    vCusto += (Double.parseDouble(ini.get(u.getNome(), "vCusto")));
                    vValeVenda += (Double.parseDouble(ini.get(u.getNome(), "vValeVenda")));
                    vValeCusto += (Double.parseDouble(ini.get(u.getNome(), "vValeCusto")));
                    vAcrescimoBoleto += (Double.parseDouble(ini.get(u.getNome(), "vAcrescimo")));
                    vDescontoRecebimento += (Double.parseDouble(ini.get(u.getNome(), "vDesconto")));

                } catch (IOException ex) {
                    Mensagens.msgErro("erro\n" + ex.getMessage());
                }
            }

            vFinal = vTotal - vValeVenda - vAcrescimoBoleto - vDescontoRecebimento;
            vCustoFinal = vCusto - vValeCusto;

            lbTotal.setText("TOTAL VENDAS LIQUIDO:");
            txDiasTrabalhados.setText(dTrab + "");
            txMediaDiaria.setText(formatoMoeda.format(vFinal / dTrab));
            txDiasUteis.setText(diasUteis);
            txEstimativa.setText(formatoMoeda.format((vFinal / dTrab) * Integer.parseInt(diasUteis)));
            txTotalCusto.setText(formatoMoeda.format(vCustoFinal));
            txValorLucro.setText(formatoMoeda.format(vFinal - vCustoFinal));

            if (vFinal <= 0) {
                txRentabilidade.setText("% 0,00");
                lbSoma.setText("");
            } else {
                txRentabilidade.setText("%" + formatoMoeda(((vFinal - vCustoFinal) / vFinal) * 100) + " / %" + formatoMoeda(((vFinal / vCustoFinal) - 1) * 100));
            }
            if (cbVendedor.getSelectedIndex() == 0) {
                txMeta.setText(formatoMoeda.format(metaEmpresa));
            } else {
                txMeta.setText(formatoMoeda.format(metaVendedor));
            }
            txTotalVenda.setText(formatoMoeda.format(vFinal));
            txTotalVale.setText(formatoMoeda.format(vValeVenda) + " (" + formatoMoeda((vValeVenda * 100) / vTotal) + " %)");
            txAcrescimoBoleto.setText(formatoMoeda.format(vAcrescimoBoleto) + " (" + formatoMoeda((vAcrescimoBoleto * 100) / vTotal) + " %)");
            txTotalDescontos.setText(formatoMoeda.format(vDescontoRecebimento) + " (" + formatoMoeda((vDescontoRecebimento * 100) / vTotal) + " %)");
        } //ORÇAMENTOS
        else {
            if (cbVendedor.getSelectedIndex() != 0) {
                idVendedor = listaVendedores.get(cbVendedor.getSelectedIndex() - 1).getCodigo();
            }

            if (cbFPgto.getSelectedIndex() != 0) {
                idFormaPgto = listaFPgto.get(cbFPgto.getSelectedIndex() - 1).getCodigo();
            }

            try {
                // List<PedidoBean> lVendas = PedidoDao.vendasGrafico(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()), idVendedor, idFormaPgto, "");
                List<PedidoBean> lVendas = PedidoDao.vendasTabela(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()), idVendedor, idFormaPgto, tPedido());

                //Retorna quantidade de dias úteis (TRABALHADOS) entre a data inicial e data final
                vTotal = 0;
                //vMedia = 0;

                for (PedidoBean pedido : lVendas) {
                    vTotal += pedido.getvFinal();
                }

                lbTotal.setText("TOTAL DE ORÇAMENTOS:");
                txDiasTrabalhados.setText(dTrab + "");
                txMediaDiaria.setText(formatoMoeda.format(vTotal / dTrab));
                txEstimativa.setText("R$ 0,00");
                txTotalVenda.setText(formatoMoeda.format(vTotal));
                txTotalCusto.setText("R$ 0,00");
                txValorLucro.setText("R$ 0,00");

                txRentabilidade.setText("R$ 0,00");
                txMeta.setText("R$ 0,00");
                txMeta.setText("R$ 0,00");
                txDiasUteis.setText("R$ 0,00");
                txTotalVale.setText("R$ 0,00");
                txAcrescimoBoleto.setText("R$ 0,00");

            } catch (IOException | SQLException ex) {
                Mensagens.msgErro("Erro\n" + ex.getMessage());
            }
        }
    }

    private void gerarRelatorio() {

        int tipoRelatorio = jTabbedPane.getSelectedIndex();

        switch (tipoRelatorio) {
            case 0:
                jTabbedPane.setSelectedIndex(0);

                if (validaVendasGrafTabela()) {
                    final BarraProgresso pb = new BarraProgresso(this);
                    SwingWorker worker = new SwingWorker() {
                        @Override
                        protected Object doInBackground() throws Exception {
                            pb.gerarJanela();
                            /*
                             se for pedido gera todos os gráficos, senão apenas calcula valores, gera gráfico com total de orçamentos e total em valores por vendedor
                             */
                            if (cbPedidos.isSelected()) {

                                pb.lbDescricao.setText("COLETANDO DADOS, AGUARDE...");
                                carregandoDados();

                                pb.lbDescricao.setText("GERANDO GRAF. DE VENDAS, AGUARDE...");
                                aGrafVendas();

                                pb.lbDescricao.setText("GERANDO GRAF. DE RENTABILIDADE, AGUARDE...");
                                aGrafRentabilidade();

                                pb.lbDescricao.setText("SOMANDO QTD. DE PEDIDOS, AGUARDE...");
                                grafQtdPedidos();

                                pb.lbDescricao.setText("GERANDO GRAF. VALORES, AGUARDE...");
                                aGrafValorRentabilidade();

                                pb.lbDescricao.setText("TOTALIZANDO VALORES, AGUARDE...");
                                totalizaValores();

                            } else {

                                pb.lbDescricao.setText("COLETANDO DADOS, AGUARDE...");
                                carregandoDados();

                                pb.lbDescricao.setText("SOMANDO QUANTIDADE DE PEDIDOS, AGUARDE...");
                                grafQtdPedidos();

                                pb.lbDescricao.setText("GERANDO GRAF. DE VENDAS, AGUARDE...");
                                aGrafVendas();

                                pb.lbDescricao.setText("TOTALIZABDO VALORES, AGUARDE...");
                                totalizaValores();

                            }
                            return null;
                        }

                        @Override
                        protected void done() {
                            pb.fechar();
                        }
                    };
                    worker.execute();
                }
                break;

            /*
             ATUALIZANDO VALORES DA TABELA
             */
            case 1:
                jTabbedPane.setSelectedIndex(1);
                if (validaVendasGrafTabela()) {

                    final BarraProgresso pb = new BarraProgresso(this);
                    SwingWorker worker = new SwingWorker() {

                        @Override
                        protected Object doInBackground() throws Exception {
                            pb.gerarJanela();

                            pb.lbDescricao.setText("COLETANDO DADOS, AGUARDE...");
                            carregandoDados();

                            pb.lbDescricao.setText("TOTALIZANDO VALORES, AGUARDE...");
                            totalizaValores();

                            pb.lbDescricao.setText("ATUALIZANDO TABELA, AGUARDE...");
                            atualizaTabela();

                            return null;
                        }

                        @Override
                        protected void done() {
                            pb.fechar();
                        }
                    };
                    worker.execute();
                }
                break;

            /*
             LINHA DO TEMPO DO VENDEDOR
             */
            case 2:
                jTabbedPane.setSelectedIndex(2);
                limpaCampos();
                //se periodo entre a data for maior que 30 dias atualiza os valores mensalmente
                if (Utils.calcQtdDias(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate())) > 30) {
                    if (validaLinhaTempoVendedor()) {
                        final BarraProgresso pb = new BarraProgresso(this);
                        SwingWorker worker = new SwingWorker() {

                            @Override
                            protected Object doInBackground() throws Exception {
                                pb.gerarJanela();

                                pb.lbDescricao.setText("ATUALIZANDO GRAFICO, AGUARDE...");
                                linhaTempoVendedorMensal();
                                return null;
                            }

                            @Override
                            protected void done() {
                                pb.fechar();
                            }
                        };
                        worker.execute();
                    }
                } //se periodo entre a data for menor que 30 dias exibe valores de vendas diário
                else {
                    if (validaLinhaTempoVendedor()) {
                        final BarraProgresso pb = new BarraProgresso(this);
                        SwingWorker worker = new SwingWorker() {

                            @Override
                            protected Object doInBackground() throws Exception {
                                pb.gerarJanela();
                                pb.lbDescricao.setText("ATUALIZANDO GRAFICO, AGUARDE...");
                                linhaTempoVendedorDiario();
                                return null;
                            }

                            @Override
                            protected void done() {
                                pb.fechar();
                            }
                        };
                        worker.execute();
                    }
                }

                break;

            /*
             LINHA DO TEMPO EMPRESA
             */
            case 3:
                jTabbedPane.setSelectedIndex(3);
                limpaCampos();

                if (Utils.calcQtdDias(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate())) > 30) {
                    if (validaLinhaTempoEmpresa()) {
                        final BarraProgresso pb = new BarraProgresso(this);
                        SwingWorker worker = new SwingWorker() {

                            @Override
                            protected Object doInBackground() throws Exception {
                                pb.gerarJanela();
                                pb.lbDescricao.setText("ATUALIZANDO GRAFICO, AGUARDE...");
                                linhaTempoEmpresaMensal();

                                return null;
                            }

                            @Override
                            protected void done() {
                                pb.fechar();
                            }
                        };
                        worker.execute();

                    }
                } else {
                    if (validaLinhaTempoEmpresa()) {
                        final BarraProgresso pb = new BarraProgresso(this);
                        SwingWorker worker = new SwingWorker() {

                            @Override
                            protected Object doInBackground() throws Exception {
                                pb.gerarJanela();
                                pb.lbDescricao.setText("ATUALIZANDO GRAFICO, AGUARDE...");
                                linhaTempoEmpresaDiario();

                                return null;
                            }

                            @Override
                            protected void done() {
                                pb.fechar();
                            }
                        };
                        worker.execute();
                    }
                }
                break;
        }
    }

    private void atuComboTabelaVend() {
        try {

            DefaultTableModel modelo = (DefaultTableModel) tabelaVendedores.getModel();

            modelo.setNumRows(0);
            cbVendedor.removeAllItems();
            cbVendedor.addItem("<< TODOS OS VENDEDORES >>");
            listaVendedores = UsuarioDao.getListaComboVendedores();

            for (UsuarioBean usu : listaVendedores) {
                cbVendedor.addItem(usu.getCodigo() + " - " + usu.getNome());
                modelo.addRow(new Object[]{
                    usu.getCodigo(), usu.getNome()
                });
            }

            DefaultTableCellRenderer centralizado = new DefaultTableCellRenderer();
            centralizado.setHorizontalAlignment(SwingConstants.CENTER);

            tabelaVendedores.getColumnModel().getColumn(0).setCellRenderer(centralizado);
        } catch (IOException | SQLException ex) {
            Mensagens.msgErro("erro\n" + ex.getMessage());
        }
    }

    private void atuComboFPgto() {
        try {
            cbFPgto.removeAllItems();
            cbFPgto.addItem("<< TODAS AS FORMAS DE PGTO >>");
            listaFPgto = FormaPgtoDao.getListaFPgto();

            for (FormaPgtoBean sp : listaFPgto) {
                cbFPgto.addItem(sp.getCodigo() + " - " + sp.getDescricao());
            }
        } catch (IOException | SQLException ex) {
            Mensagens.msgErro("erro\n" + ex.getMessage());
        }
    }

    private boolean validaVendasGrafTabela() {
        /*
         * m: se for 0 valida vendas do gráfico, se for 2 média mensal empresa, 3 media diaria do vendedor, 4 media diaria da empresa
         */
        boolean verifica = true;
        String msg = "";

        /*
         validando se pedido ou orçamento esta selecionado
         */
        if (!cbPedidos.isSelected() && !cbOrcamentos.isSelected()) {
            verifica = false;
            msg = "selecione pedido ou orçamento\n";
        }

        // Validação válida para todas as opções
        if (dataInicial.getDate() == null || dataFinal.getDate() == null) {
            msg += "Data com campo Vazio ou valor invalido! Verifique;\n";
            verifica = false;
        } else {
            if (dataFinal.getDate().compareTo(dataInicial.getDate()) < 0) {
                msg += "Data Final Maior que Data Inicial;\n";
                verifica = false;
            }
        }

        int qtdDias = Utils.calcQtdDias(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()));
        if (qtdDias > 60) {
            if (Mensagens.confirmar(this, qtdDias + " dias entre a data inicial e a data final\n deseja realmente gerar relatorio")) {
            } else {
                verifica = false;
            }
        }
        if (verifica == false) {
            //se msg for vazio, é pq caiu na validação de qtdDias, ai não exibe tela de atenção.
            if (msg.equals("")) {
            } else {
                Mensagens.msgAtencao(msg);
            }
        }
        return verifica;
    }

    private boolean validaLinhaTempoEmpresa() {
        boolean verifica = true;
        String msg = "";

        if (dataInicial.getDate() == null || dataFinal.getDate() == null) {
            msg += "Data com campo Vazio ou valor invalido! Verifique;\n";
            verifica = false;
        } else {
            if (dataFinal.getDate().compareTo(dataInicial.getDate()) < 0) {
                msg += "Data Final Maior que Data Inicial;\n";
                verifica = false;
            }
        }

        if (Utils.calcQtdDias(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate())) > 30
                && Utils.calcQtdDias(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate())) < 60) {
            msg += "periodo deve conter mais de 60 dias\n";
            verifica = false;
        }

        if (verifica == false) {
            Mensagens.msgAtencao(msg);

        }
        return verifica;
    }

    private boolean validaLinhaTempoVendedor() {
        boolean verifica = true;
        String msg = "";

        if (dataInicial.getDate() == null || dataFinal.getDate() == null) {
            msg += "Data com campo Vazio ou valor invalido! Verifique;\n";
            verifica = false;
        } else {
            if (dataFinal.getDate().compareTo(dataInicial.getDate()) < 0) {
                msg += "Data Final Maior que Data Inicial;\n";
                verifica = false;
            }
        }
        if (tabelaVendedores.getSelectedRow() < 0) {
            msg += "selecione pelo menos 1 vendedor;\n";
            verifica = false;
        }

        if (Utils.calcQtdDias(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate())) > 30
                && Utils.calcQtdDias(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate())) < 60) {
            msg += "periodo deve conter mais de 60 dias\n";
            verifica = false;
        }

        if (verifica == false) {
            Mensagens.msgAtencao(msg);

        }
        return verifica;
    }

    /*
     gerando grafico com total de pedidos por vendedor
     */
    private DefaultCategoryDataset qtdPedidos() {

        DefaultCategoryDataset dataSet = new DefaultCategoryDataset();

        idVendedor = "";
        idFormaPgto = "";

        if (cbVendedor.getSelectedIndex() != 0) {
            idVendedor = listaVendedores.get(cbVendedor.getSelectedIndex() - 1).getCodigo();
        }

        if (cbFPgto.getSelectedIndex() != 0) {
            idFormaPgto = listaFPgto.get(cbFPgto.getSelectedIndex() - 1).getCodigo();
        }

        try {
            List<PedidoBean> qtdPedidos = PedidoDao.qtdPedidos(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()), idVendedor, idFormaPgto, tPedido(), exibeGrafico);
            int sizeLista = qtdPedidos.size();
            for (int i = 0; i < sizeLista; i++) {
                dataSet.addValue(qtdPedidos.get(i).getQtdPedidos(), "", qtdPedidos.get(i).getUsuario().getNome());
            }
        } catch (SQLException | IOException ex) {
            Mensagens.msgErro("erro\n" + ex.getMessage());
        }
        return dataSet;
    }

    /*
     * gerando grafico com media diaria (linha)
     */
    private DefaultCategoryDataset cdtLinhaTempoDiarioVendedor() {
        DefaultCategoryDataset dataSet = new DefaultCategoryDataset();

        int[] linhas = tabelaVendedores.getSelectedRows();
        for (int i = 0; i < linhas.length; i++) {
            try {
                /*
                 Parametros do metodo grafVendaAnual: data, primeiro ou ultimo dia, formato spac ou brasil de data
                 */
                List<PedidoBean> listaMedia = PedidoDao.grafMediaDiariaVendedor(formDataSpac.format(dataInicial.getDate()),
                        formDataSpac.format(dataFinal.getDate()), tabelaVendedores.getValueAt(linhas[i], 0).toString());

                List<PedidoBean> listaTempAcrescimo;
                List<PedidoBean> listaTempDescontoRecebimento;
                List<ValeMercadoriaBean> listaTempVale;

                listaTempAcrescimo = PedidoDao.acrescimoBoletoDiario(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()),
                        tabelaVendedores.getValueAt(linhas[i], 0).toString());

                listaTempVale = ValeMercadoriaDao.totalVendaValeDiario(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()),
                        tabelaVendedores.getValueAt(linhas[i], 0).toString());

                listaTempDescontoRecebimento = PedidoDao.descontoRecebimentoVendedorDiario(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()),
                        tabelaVendedores.getValueAt(linhas[i], 0).toString());

                //descontando valores de acrescimo de boleto
                for (int j = 0; j < listaMedia.size(); j++) {

                    for (PedidoBean ltAcrescimo : listaTempAcrescimo) {
                        if (listaMedia.get(j).getData().equals(ltAcrescimo.getData())) {
                            PedidoBean p = new PedidoBean();
                            UsuarioBean u = new UsuarioBean();
                            p.setData(listaMedia.get(j).getData());
                            u.setNome(listaMedia.get(j).getUsuario().getNome());
                            p.setUsuario(u);
                            p.setvFinal(listaMedia.get(j).getvFinal() - ltAcrescimo.getaGerente());
                            listaMedia.set(j, p);
                            break;
                        }
                    }
                }

                //descontando valores de desconto no recebimento
                for (int j = 0; j < listaMedia.size(); j++) {

                    for (PedidoBean ltDescontoRecebimento : listaTempDescontoRecebimento) {
                        if (listaMedia.get(j).getData().equals(ltDescontoRecebimento.getData())) {

                            PedidoBean p = new PedidoBean();
                            UsuarioBean u = new UsuarioBean();
                            p.setData(listaMedia.get(j).getData());
                            u.setNome(listaMedia.get(j).getUsuario().getNome());
                            p.setUsuario(u);
                            p.setvFinal(listaMedia.get(j).getvFinal() - ltDescontoRecebimento.getdGerente());
                            listaMedia.set(j, p);

                            break;
                        }
                    }
                }

                //descontando valores de vale mercadoria
                for (int j = 0; j < listaMedia.size(); j++) {
                    for (ValeMercadoriaBean ltVale : listaTempVale) {
                        if (listaMedia.get(j).getData().equals(ltVale.getPedido().getData())) {
                            PedidoBean p = new PedidoBean();
                            UsuarioBean u = new UsuarioBean();
                            p.setData(listaMedia.get(j).getData());
                            u.setNome(listaMedia.get(j).getUsuario().getNome());
                            p.setUsuario(u);
                            p.setvFinal(listaMedia.get(j).getvFinal() - ltVale.getvVale());
                            listaMedia.set(j, p);
                            break;
                        }
                    }
                }

                //adicionando valores ao data set para gerar o gráfico
                for (PedidoBean p : listaMedia) {
                    dataSet.addValue(p.getvFinal(), p.getUsuario().getNome(), p.getData());
                }

            } catch (SQLException | IOException e) {
                Mensagens.msgErro("erro\n" + e.getMessage());
            }
        }
        return dataSet;
    }

    /*
     * gerando grafico com media mensal (linha)
     */
    private DefaultCategoryDataset cdtLinhaTempoVendedor() {
        DefaultCategoryDataset dataSet = new DefaultCategoryDataset();

        int[] linhas = tabelaVendedores.getSelectedRows();
        for (int i = 0; i < linhas.length; i++) {
            try {
                /*
                 Parametros do metodo grafVendaAnual: data, primeiro ou ultimo dia, formato spac ou brasil de data
                 */
                List<PedidoBean> listaVenda = PedidoDao.grafLinhaTempoMensalVendedor(Utils.retornaData(dataInicial.getDate(), 0, 0),
                        Utils.retornaData(dataFinal.getDate(), 1, 0), tabelaVendedores.getValueAt(linhas[i], 0).toString());

                List<PedidoBean> listaTempAcrescimo;
                List<ValeMercadoriaBean> listaTempVale;
                List<PedidoBean> listaTempDescontoRecebimento;

                listaTempAcrescimo = PedidoDao.acrescimoBoletoMensal(Utils.retornaData(dataInicial.getDate(), 0, 0), Utils.retornaData(dataFinal.getDate(), 1, 0),
                        tabelaVendedores.getValueAt(linhas[i], 0).toString());

                listaTempVale = ValeMercadoriaDao.totalVendaValeMensal(Utils.retornaData(dataInicial.getDate(), 0, 0), Utils.retornaData(dataFinal.getDate(), 1, 0),
                        tabelaVendedores.getValueAt(linhas[i], 0).toString());

                listaTempDescontoRecebimento = PedidoDao.descontoRecebimentoVendedorMensal(Utils.retornaData(dataInicial.getDate(), 0, 0), Utils.retornaData(dataFinal.getDate(), 1, 0),
                        tabelaVendedores.getValueAt(linhas[i], 0).toString());

                //descontando valores de acrescimo de boleto
                for (int j = 0; j < listaVenda.size(); j++) {

                    for (PedidoBean ltAcrescimo : listaTempAcrescimo) {

                        if (listaVenda.get(j).getData().equals(ltAcrescimo.getData())) {

                            PedidoBean p = new PedidoBean();
                            UsuarioBean u = new UsuarioBean();
                            p.setData(listaVenda.get(j).getData());
                            u.setNome(listaVenda.get(j).getUsuario().getNome());
                            p.setUsuario(u);
                            p.setvFinal(listaVenda.get(j).getvFinal() - ltAcrescimo.getaGerente());

                            listaVenda.set(j, p);

                            break;
                        }
                    }
                }

                //descontando valores de desconto no recebimento
                for (int j = 0; j < listaVenda.size(); j++) {

                    for (PedidoBean lDescontoRecebimento : listaTempDescontoRecebimento) {

                        if (listaVenda.get(j).getData().equals(lDescontoRecebimento.getData())) {

                            PedidoBean p = new PedidoBean();
                            UsuarioBean u = new UsuarioBean();

                            p.setData(listaVenda.get(j).getData());
                            u.setNome(listaVenda.get(j).getUsuario().getNome());
                            p.setUsuario(u);
                            p.setvFinal(listaVenda.get(j).getvFinal() - lDescontoRecebimento.getdGerente());

                            listaVenda.set(j, p);

                            break;
                        }
                    }
                }

                //descontando valores de vale mercadoria
                for (int j = 0; j < listaVenda.size(); j++) {
                    for (ValeMercadoriaBean ltVale : listaTempVale) {
                        if (listaVenda.get(j).getData().equals(ltVale.getPedido().getData())) {

                            PedidoBean p = new PedidoBean();
                            UsuarioBean u = new UsuarioBean();
                            p.setData(listaVenda.get(j).getData());
                            u.setNome(listaVenda.get(j).getUsuario().getNome());
                            p.setUsuario(u);
                            p.setvFinal(listaVenda.get(j).getvFinal() - ltVale.getvVale());

                            listaVenda.set(j, p);

                            break;
                        }
                    }
                }

                for (PedidoBean p : listaVenda) {
                    if (p.getData().equals("01")) {
                        dataSet.addValue(p.getvFinal(), p.getUsuario().getNome(), "JANEIRO");
                    }
                    if (p.getData().equals("02")) {
                        dataSet.addValue(p.getvFinal(), p.getUsuario().getNome(), "FEVEREIRO");
                    }
                    if (p.getData().equals("03")) {
                        dataSet.addValue(p.getvFinal(), p.getUsuario().getNome(), "MARÇO");
                    }
                    if (p.getData().equals("04")) {
                        dataSet.addValue(p.getvFinal(), p.getUsuario().getNome(), "ABRIL");
                    }
                    if (p.getData().equals("05")) {
                        dataSet.addValue(p.getvFinal(), p.getUsuario().getNome(), "MAIO");
                    }
                    if (p.getData().equals("06")) {
                        dataSet.addValue(p.getvFinal(), p.getUsuario().getNome(), "JUNHO");
                    }
                    if (p.getData().equals("07")) {
                        dataSet.addValue(p.getvFinal(), p.getUsuario().getNome(), "JULHO");
                    }
                    if (p.getData().equals("08")) {
                        dataSet.addValue(p.getvFinal(), p.getUsuario().getNome(), "AGOSTO");
                    }
                    if (p.getData().equals("09")) {
                        dataSet.addValue(p.getvFinal(), p.getUsuario().getNome(), "SETEMBRO");
                    }
                    if (p.getData().equals("10")) {
                        dataSet.addValue(p.getvFinal(), p.getUsuario().getNome(), "OUTUBRO");
                    }
                    if (p.getData().equals("11")) {
                        dataSet.addValue(p.getvFinal(), p.getUsuario().getNome(), "NOVEMBRO");
                    }
                    if (p.getData().equals("12")) {
                        dataSet.addValue(p.getvFinal(), p.getUsuario().getNome(), "DEZEMBRO");
                    }
                }

            } catch (SQLException | IOException e) {
                Mensagens.msgErro("erro\n" + e.getMessage());
            }

        }

        return dataSet;
    }

    /*
     venda diaria da empresa
     */
    private DefaultCategoryDataset cdtEmpresaDiario() {
        DefaultCategoryDataset dataSet = new DefaultCategoryDataset();

        try {
            List<PedidoBean> listaMedia = PedidoDao.grafVendaDiariaEmpresa(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()));

            List<PedidoBean> listaTempAcrescimo;
            List<PedidoBean> listaTempDesconto;
            List<ValeMercadoriaBean> listaTempVale;

            listaTempAcrescimo = PedidoDao.acrescimoBoletoEmpresaDiario(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()));
            listaTempVale = ValeMercadoriaDao.totalVendaValeEmpresaDiario(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()));
            listaTempDesconto = PedidoDao.descontoRecebimentoEmpresaDiario(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()));

            //descontando valores de acrescimo de boleto
            for (int i = 0; i < listaMedia.size(); i++) {

                for (PedidoBean ltAcrescimo : listaTempAcrescimo) {

                    if (listaMedia.get(i).getData().equals(ltAcrescimo.getData())) {

                        PedidoBean p = new PedidoBean();

                        p.setData(listaMedia.get(i).getData());
                        p.setvFinal(listaMedia.get(i).getvFinal() - ltAcrescimo.getaGerente());

                        listaMedia.set(i, p);

                        break;
                    }
                }
            }

            //descontando valores de vale mercadoria
            for (int i = 0; i < listaMedia.size(); i++) {
                for (ValeMercadoriaBean ltVale : listaTempVale) {
                    if (listaMedia.get(i).getData().equals(ltVale.getPedido().getData())) {

                        PedidoBean p = new PedidoBean();

                        p.setData(listaMedia.get(i).getData());
                        p.setvFinal(listaMedia.get(i).getvFinal() - ltVale.getvVale());

                        listaMedia.set(i, p);

                        break;
                    }
                }
            }

            //descontando valores de desconto no recebimento
            for (int i = 0; i < listaMedia.size(); i++) {

                for (PedidoBean ltDescontoRecebimento : listaTempDesconto) {

                    if (listaMedia.get(i).getData().equals(ltDescontoRecebimento.getData())) {

                        PedidoBean p = new PedidoBean();

                        p.setData(listaMedia.get(i).getData());
                        p.setvFinal(listaMedia.get(i).getvFinal() - ltDescontoRecebimento.getdGerente());

                        listaMedia.set(i, p);

                        break;
                    }
                }
            }

            for (PedidoBean p : listaMedia) {
                dataSet.addValue(p.getvFinal(), "", p.getData());
            }
        } catch (SQLException | IOException e) {
            Mensagens.msgErro("erro\n" + e.getMessage());
        }
        return dataSet;
    }

    /*
     retorna vendas por mês da empresa
     */
    private DefaultCategoryDataset cdtEmpresaMensal() {
        DefaultCategoryDataset dataSet = new DefaultCategoryDataset();

        try {
            /*
             Parametros do metodo grafVendaAnual: data, primeiro ou ultimo dia, formato spac ou brasil de data
             */
            List<PedidoBean> listaMedia = PedidoDao.grafLinhaTempoEmpresaMensall(Utils.retornaData(dataInicial.getDate(), 0, 0), Utils.retornaData(dataFinal.getDate(), 1, 0));

            List<PedidoBean> listaTempAcrescimo;
            List<PedidoBean> listaTempDescontos;
            List<ValeMercadoriaBean> listaTempVale;

            listaTempAcrescimo = PedidoDao.acrescimoBoletoEmpresaMensal(Utils.retornaData(dataInicial.getDate(), 0, 0), Utils.retornaData(dataFinal.getDate(), 1, 0));
            listaTempVale = ValeMercadoriaDao.totalVendaValeEmpresaMensal(Utils.retornaData(dataInicial.getDate(), 0, 0), Utils.retornaData(dataFinal.getDate(), 1, 0));
            listaTempDescontos = PedidoDao.descontoRecebimentoEmpresaMensal(Utils.retornaData(dataInicial.getDate(), 0, 0), Utils.retornaData(dataFinal.getDate(), 1, 0));

            //descontando valores de acrescimo de boleto
            for (int i = 0; i < listaMedia.size(); i++) {

                for (PedidoBean ltAcrescimo : listaTempAcrescimo) {

                    if (listaMedia.get(i).getMes().equals(ltAcrescimo.getMes())) {

                        PedidoBean p = new PedidoBean();

                        p.setMes(listaMedia.get(i).getMes());
                        p.setAno(listaMedia.get(i).getAno());
                        p.setvFinal(listaMedia.get(i).getvFinal() - ltAcrescimo.getaGerente());

                        listaMedia.set(i, p);

                        break;
                    }
                }
            }

            //descontando valores de vale mercadoria
            for (int i = 0; i < listaMedia.size(); i++) {
                for (ValeMercadoriaBean ltVale : listaTempVale) {
                    if (listaMedia.get(i).getMes().equals(ltVale.getPedido().getMes())) {

                        PedidoBean p = new PedidoBean();
                        p.setMes(listaMedia.get(i).getMes());
                        p.setAno(listaMedia.get(i).getAno());
                        p.setvFinal(listaMedia.get(i).getvFinal() - ltVale.getvVale());

                        listaMedia.set(i, p);

                        break;
                    }
                }
            }

            //descontando valores de desconto no recebimento
            for (int i = 0; i < listaMedia.size(); i++) {

                for (PedidoBean lDescontoRecebimento : listaTempDescontos) {

                    if (listaMedia.get(i).getMes().equals(lDescontoRecebimento.getMes())) {

                        PedidoBean p = new PedidoBean();

                        p.setMes(listaMedia.get(i).getMes());
                        p.setAno(listaMedia.get(i).getAno());

                        p.setvFinal(listaMedia.get(i).getvFinal() - lDescontoRecebimento.getdGerente());

                        listaMedia.set(i, p);

                        break;
                    }
                }
            }

            for (PedidoBean p : listaMedia) {
                if (p.getMes().equals("01")) {
                    dataSet.addValue(p.getvFinal(), p.getAno(), "JANEIRO");
                }
                if (p.getMes().equals("02")) {
                    dataSet.addValue(p.getvFinal(), p.getAno(), "FEVEREIRO");
                }
                if (p.getMes().equals("03")) {
                    dataSet.addValue(p.getvFinal(), p.getAno(), "MARÇO");
                }
                if (p.getMes().equals("04")) {
                    dataSet.addValue(p.getvFinal(), p.getAno(), "ABRIL");
                }
                if (p.getMes().equals("05")) {
                    dataSet.addValue(p.getvFinal(), p.getAno(), "MAIO");
                }
                if (p.getMes().equals("06")) {
                    dataSet.addValue(p.getvFinal(), p.getAno(), "JUNHO");
                }
                if (p.getMes().equals("07")) {
                    dataSet.addValue(p.getvFinal(), p.getAno(), "JULHO");
                }
                if (p.getMes().equals("08")) {
                    dataSet.addValue(p.getvFinal(), p.getAno(), "AGOSTO");
                }
                if (p.getMes().equals("09")) {
                    dataSet.addValue(p.getvFinal(), p.getAno(), "SETEMBRO");
                }
                if (p.getMes().equals("10")) {
                    dataSet.addValue(p.getvFinal(), p.getAno(), "OUTUBRO");
                }
                if (p.getMes().equals("11")) {
                    dataSet.addValue(p.getvFinal(), p.getAno(), "NOVEMBRO");
                }
                if (p.getMes().equals("12")) {
                    dataSet.addValue(p.getvFinal(), p.getAno(), "DEZEMBRO");
                }
            }
        } catch (SQLException | IOException e) {
            Mensagens.msgErro("erro\n" + e.getMessage());
        }
        return dataSet;
    }

    /*
     Gerando relatorio com o valor de rentabilidade de cada vendedor
     */
    private CategoryDataset cdtValorRentabilidade() {

        DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        for (UsuarioBean u : listaVendedores) {
            try {
                ini = new Ini(new File(Utils.dirFileCalcs()));

                vTotal = (Double.parseDouble(ini.get(u.getNome(), "vVenda")));
                vCusto = (Double.parseDouble(ini.get(u.getNome(), "vCusto")));
                vValeVenda = (Double.parseDouble(ini.get(u.getNome(), "vValeVenda")));
                vValeCusto = (Double.parseDouble(ini.get(u.getNome(), "vValeCusto")));
                vAcrescimoBoleto = (Double.parseDouble(ini.get(u.getNome(), "vAcrescimo")));
                vDescontoRecebimento = (Double.parseDouble(ini.get(u.getNome(), "vDesconto")));

                vFinal = vTotal - vValeVenda - vAcrescimoBoleto - vDescontoRecebimento;
                vCustoFinal = vCusto - vValeCusto;

                if (vFinal != 0) {
                    if (exibeGrafico.equals("005")) {
                        if (ini.get(u.getNome(), "funcao").equals("005")) {
                            dataset.addValue(vFinal - vCustoFinal, u.getNome(), "");
                        }

                    } else {
                        dataset.addValue(vFinal - vCustoFinal, u.getNome(), "");
                    }
                }

            } catch (IOException ex) {
                Mensagens.msgErro("erro\n" + ex.getMessage());
            }
        }
        return dataset;
    }


    /*
     * gerando grafico de rentabilidade (pizza)
     *
     */
    private DefaultPieDataset cdtRentabilidade() {

        DefaultPieDataset pieDataset = new DefaultPieDataset();

        for (UsuarioBean u : listaVendedores) {
            try {
                ini = new Ini(new File(Utils.dirFileCalcs()));

                vTotal = (Double.parseDouble(ini.get(u.getNome(), "vVenda")));
                vCusto = (Double.parseDouble(ini.get(u.getNome(), "vCusto")));
                vValeVenda = (Double.parseDouble(ini.get(u.getNome(), "vValeVenda")));
                vValeCusto = (Double.parseDouble(ini.get(u.getNome(), "vValeCusto")));
                vAcrescimoBoleto = (Double.parseDouble(ini.get(u.getNome(), "vAcrescimo")));
                vDescontoRecebimento = (Double.parseDouble(ini.get(u.getNome(), "vDesconto")));

                vFinal = vTotal - vValeVenda - vAcrescimoBoleto - vDescontoRecebimento;
                vCustoFinal = vCusto - vValeCusto;

                if (vFinal != 0) {
                    if (exibeGrafico.equals("005")) {
                        if (ini.get(u.getNome(), "funcao").equals("005")) {
                            if (vCustoFinal > vFinal) {
                                pieDataset.setValue(u.getNome(), 0.1);
                            } else {
                                double rentabilidade = (((vFinal - vCustoFinal) / vFinal) * 100);
                                pieDataset.setValue(u.getNome(), rentabilidade);
                            }
                        }

                    } else {
                        if (vCustoFinal > vFinal) {
                            pieDataset.setValue(u.getNome(), 0.1);
                        } else {
                            double rentabilidade = (((vFinal - vCustoFinal) / vFinal) * 100);
                            pieDataset.setValue(u.getNome(), rentabilidade);
                        }
                    }
                }
            } catch (IOException ex) {
                Mensagens.msgErro("erro\n" + ex.getMessage());
            }
        }
        return pieDataset;
    }

    /*
     * Carregando dados para gerar o grafico de vendas(barra)
     *
     */
    private CategoryDataset cdtVendas() {

        DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        for (UsuarioBean u : listaVendedores) {
            try {
                ini = new Ini(new File(Utils.dirFileCalcs()));

                vTotal = (Double.parseDouble(ini.get(u.getNome(), "vVenda")));
                vValeVenda = (Double.parseDouble(ini.get(u.getNome(), "vValeVenda")));
                vAcrescimoBoleto = (Double.parseDouble(ini.get(u.getNome(), "vAcrescimo")));
                vDescontoRecebimento = (Double.parseDouble(ini.get(u.getNome(), "vDesconto")));

                vFinal = vTotal - vValeVenda - vAcrescimoBoleto - vDescontoRecebimento;

                if (vFinal != 0) {
                    if (exibeGrafico.equals("005")) {
                        if (ini.get(u.getNome(), "funcao").equals("005")) {
                            dataset.addValue(vFinal, u.getNome(), "");
                        }
                    } else {
                        dataset.addValue(vFinal, u.getNome(), "");
                    }
                }

            } catch (IOException ex) {
                Mensagens.msgErro("erro\n" + ex.getMessage());
            }
        }
        return dataset;
    }

    /*
     * Gerando o grafico com a quantidade de pedidos
     *
     */
    private void grafQtdPedidos() {

        CategoryDataset cds = qtdPedidos();
        String titulo;
        if (cbPedidos.isSelected()) {
            titulo = "PEDIDOS FINALIZADOS";
        } else {
            titulo = "ORÇAMENTOS EM ABERTO";
        }
        String eixoY = "INTERVALO DE VALORES";
        String txLegenda = "";
        boolean legenda = false;
        boolean tooltips = false;
        boolean urls = false;

        JFreeChart graf = ChartFactory.createBarChart(titulo, txLegenda, "", cds, PlotOrientation.HORIZONTAL, legenda, tooltips, urls);
        CategoryPlot plot = (CategoryPlot) graf.getCategoryPlot();

        CategoryItemRenderer itemRerender = plot.getRenderer();
        itemRerender.setPaint(Color.RED);

        itemRerender.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", new DecimalFormat("0")));
        itemRerender.setItemLabelsVisible(true);

        ChartPanel myChartpanel = new ChartPanel(graf, true);
        myChartpanel.setSize(jpPedidos.getWidth(), jpPedidos.getHeight());
        myChartpanel.setVisible(true);
        jpPedidos.removeAll();
        jpPedidos.add(myChartpanel);
        jpPedidos.revalidate();
        jpPedidos.repaint();

    }

    /*
     atualizando grafico com valor da rentabilidade
     */
    private void aGrafValorRentabilidade() {

        CategoryDataset cds = cdtValorRentabilidade();
        String titulo = "RENTABILIDADE (R$)";
        String eixoY = "INTERVALO DE VALORES";
        String txLegenda = "";
        boolean legenda = false;
        boolean tooltips = false;
        boolean urls = false;

        JFreeChart graf = ChartFactory.createBarChart(titulo, txLegenda, "", cds, PlotOrientation.VERTICAL, legenda, tooltips, urls);
        CategoryPlot plot = (CategoryPlot) graf.getCategoryPlot();

        CategoryItemRenderer itemRerender = plot.getRenderer();

        itemRerender.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", NumberFormat.getCurrencyInstance()));
        itemRerender.setItemLabelsVisible(true);

        ChartPanel myChartpanel = new ChartPanel(graf, true);
        myChartpanel.setSize(jpGrafRentabilidadeValor.getWidth(), jpGrafRentabilidadeValor.getHeight());
        myChartpanel.setVisible(true);
        jpGrafRentabilidadeValor.removeAll();
        jpGrafRentabilidadeValor.add(myChartpanel);
        jpGrafRentabilidadeValor.revalidate();
        jpGrafRentabilidadeValor.repaint();

    }


    /*
     * Gerando o grafico de vendas (barra)
     *
     */
    private void aGrafVendas() {

        CategoryDataset cds = cdtVendas();
        //String titulo = "VENDAS - " + formDataBr.format(dataInicial.getDate()) + " A " + formDataBr.format(dataFinal.getDate());

        String titulo;
        if (cbPedidos.isSelected()) {
            titulo = "VENDAS";
        } else {
            titulo = "ORÇAMENTOS EM ABERTO";
        }
        String eixoY = "INTERVALO DE VALORES";
        String txLegenda = "";
        boolean legenda = true;
        boolean tooltips = false;
        boolean urls = false;

        JFreeChart graf = ChartFactory.createBarChart(titulo, txLegenda, "", cds, PlotOrientation.VERTICAL, legenda, tooltips, urls);
        CategoryPlot plot = (CategoryPlot) graf.getCategoryPlot();

        CategoryItemRenderer itemRerender = plot.getRenderer();

        itemRerender.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", NumberFormat.getCurrencyInstance()));
        itemRerender.setItemLabelsVisible(true);

        ChartPanel myChartpanel = new ChartPanel(graf, true);
        myChartpanel.setSize(jpGrafVendas.getWidth(), jpGrafVendas.getHeight());
        myChartpanel.setVisible(true);
        jpGrafVendas.removeAll();
        jpGrafVendas.add(myChartpanel);
        jpGrafVendas.revalidate();
        jpGrafVendas.repaint();
    }

    /*
     * Gerando o gráfico de rentabilidade (pizza)
     *
     */
    private void aGrafRentabilidade() {

        DefaultPieDataset cds = cdtRentabilidade();
        //String titulo = "RENTABILIDADE - " + formDataBr.format(dataInicial.getDate()) + " A " + formDataBr.format(dataFinal.getDate());
        String titulo = "RENTABILIDADE (%)";
        JFreeChart graf = ChartFactory.createPieChart3D(titulo, cds, false, true, false);

        PiePlot3D plot = (PiePlot3D) graf.getPlot();
        plot.setForegroundAlpha(0.7f);
        plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}: {1}%"));

        ChartPanel myChartpanel = new ChartPanel(graf, true);
        myChartpanel.setSize(jpGrafRentabilidade.getWidth(), jpGrafRentabilidade.getHeight());
        myChartpanel.setVisible(true);
        jpGrafRentabilidade.removeAll();
        jpGrafRentabilidade.add(myChartpanel);
        jpGrafRentabilidade.revalidate();
        jpGrafRentabilidade.repaint();
    }

    /*
     * Gerando o grafico de média mensal (Linha)
     *
     */
    private void linhaTempoVendedorDiario() {

        DefaultCategoryDataset cds = cdtLinhaTempoDiarioVendedor();
        //data, primeiro ou ultimo dia, formato spac ou brasil de data
        //String titulo = "COMPARATIVO DIÁRIO (VENDEDOR) - " + Utils.retornaData(dataInicial.getDate(), 0, 1) + " A " + Utils.retornaData(dataFinal.getDate(), 1, 1);
        String titulo = "";
        String eixoy = "";
        String txt_legenda = "";
        boolean legenda = true;
        boolean tooltips = true;
        boolean urls = true;

        JFreeChart grafico = ChartFactory.createLineChart3D(titulo, txt_legenda, eixoy, cds, PlotOrientation.VERTICAL, legenda, tooltips, urls);

        CategoryPlot plot = (CategoryPlot) grafico.getCategoryPlot();
        CategoryItemRenderer itemRerender = plot.getRenderer();
        //itemRerender.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", DecimalFormat.getInstance()));
        itemRerender.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", NumberFormat.getCurrencyInstance()));
        itemRerender.setItemLabelsVisible(true);

        ChartPanel mychChartPanel = new ChartPanel(grafico, true);
        mychChartPanel.setSize(jpGrafMedia.getWidth(), jpGrafMedia.getHeight());
        mychChartPanel.setVisible(true);
        jpGrafMedia.removeAll();
        jpGrafMedia.add(mychChartPanel);
        jpGrafMedia.revalidate();
        jpGrafMedia.repaint();
    }

    /*
     * Gerando o grafico de média mensal (Linha)
     *
     */
    private void linhaTempoVendedorMensal() {

        DefaultCategoryDataset cds = cdtLinhaTempoVendedor();
        //data, primeiro ou ultimo dia, formato spac ou brasil de data
        String titulo = "COMPARATIVO MENSAL (VENDEDOR) - " + Utils.retornaData(dataInicial.getDate(), 0, 1) + " A " + Utils.retornaData(dataFinal.getDate(), 1, 1);
        String eixoy = "";
        String txt_legenda = "";
        boolean legenda = true;
        boolean tooltips = true;
        boolean urls = true;

        JFreeChart grafico = ChartFactory.createLineChart3D(titulo, txt_legenda, eixoy, cds, PlotOrientation.VERTICAL, legenda, tooltips, urls);

        CategoryPlot plot = (CategoryPlot) grafico.getCategoryPlot();
        CategoryItemRenderer itemRerender = plot.getRenderer();
        itemRerender.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", NumberFormat.getCurrencyInstance()));
        itemRerender.setItemLabelsVisible(true);

        ChartPanel mychChartPanel = new ChartPanel(grafico, true);
        mychChartPanel.setSize(jpGrafMedia.getWidth(), jpGrafMedia.getHeight());
        mychChartPanel.setVisible(true);
        jpGrafMedia.removeAll();
        jpGrafMedia.add(mychChartPanel);
        jpGrafMedia.revalidate();
        jpGrafMedia.repaint();
    }

    /*
     * Gerando o grafico de valor de vendas por dia empresa
     */
    private void linhaTempoEmpresaDiario() {

        DefaultCategoryDataset cds = cdtEmpresaDiario();
        //data, primeiro ou ultimo dia, formato spac ou brasil de data
        //String titulo = "COMPARATIVO MENSAL (EMPRESA) - " + Utils.retornaData(dataInicial.getDate(), 0, 1) + " A " + Utils.retornaData(dataFinal.getDate(), 1, 1);
        String titulo = "";
        String eixoy = "";
        String txt_legenda = "";
        boolean legenda = true;
        boolean tooltips = true;
        boolean urls = true;

        JFreeChart grafico = ChartFactory.createLineChart3D(titulo, txt_legenda, eixoy, cds, PlotOrientation.VERTICAL, legenda, tooltips, urls);

        CategoryPlot plot = (CategoryPlot) grafico.getCategoryPlot();
        CategoryItemRenderer itemRerender = plot.getRenderer();
        itemRerender.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", NumberFormat.getCurrencyInstance()));
        itemRerender.setItemLabelsVisible(true);

        ChartPanel mychChartPanel = new ChartPanel(grafico, true);
        mychChartPanel.setSize(jpCresAnual.getWidth(), jpCresAnual.getHeight());
        mychChartPanel.setVisible(true);
        jpCresAnual.removeAll();
        jpCresAnual.add(mychChartPanel);
        jpCresAnual.revalidate();
        jpCresAnual.repaint();
    }

    /*
     * Gerando o grafico de valor de vendas por mês e ano (Linha)
     */
    private void linhaTempoEmpresaMensal() {

        DefaultCategoryDataset cds = cdtEmpresaMensal();
        //data, primeiro ou ultimo dia, formato spac ou brasil de data
        String titulo = "COMPARATIVO MENSAL (EMPRESA) - " + Utils.retornaData(dataInicial.getDate(), 0, 1) + " A " + Utils.retornaData(dataFinal.getDate(), 1, 1);
        String eixoy = "";
        String txt_legenda = "";
        boolean legenda = true;
        boolean tooltips = true;
        boolean urls = true;

        JFreeChart grafico = ChartFactory.createLineChart3D(titulo, txt_legenda, eixoy, cds, PlotOrientation.VERTICAL, legenda, tooltips, urls);

        CategoryPlot plot = (CategoryPlot) grafico.getCategoryPlot();
        CategoryItemRenderer itemRerender = plot.getRenderer();
        itemRerender.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", NumberFormat.getCurrencyInstance()));
        itemRerender.setItemLabelsVisible(true);

        ChartPanel mychChartPanel = new ChartPanel(grafico, true);
        mychChartPanel.setSize(jpCresAnual.getWidth(), jpCresAnual.getHeight());
        mychChartPanel.setVisible(true);
        jpCresAnual.removeAll();
        jpCresAnual.add(mychChartPanel);
        jpCresAnual.revalidate();
        jpCresAnual.repaint();
    }
    /*
     * atualizando dados na tabela
     *
     */

    public void atualizaTabela() {

        DefaultTableModel modelo = (DefaultTableModel) tabelaVendas.getModel();
        idVendedor = "";
        idFormaPgto = "";

        modelo.setNumRows(0);

        if (cbVendedor.getSelectedIndex() != 0) {
            idVendedor = listaVendedores.get(cbVendedor.getSelectedIndex() - 1).getCodigo();
        }

        if (cbFPgto.getSelectedIndex() != 0) {
            idFormaPgto = listaFPgto.get(cbFPgto.getSelectedIndex() - 1).getCodigo();
        }

        try {
            List<PedidoBean> listaPedidos = PedidoDao.vendasTabela(formDataSpac.format(dataInicial.getDate()), formDataSpac.format(dataFinal.getDate()), idVendedor, idFormaPgto, tPedido());
            for (PedidoBean pedido : listaPedidos) {
                modelo.addRow(new Object[]{
                    pedido.getPedido(), Utils.dataCorreta(pedido.getData()), pedido.getUsuario().getNome(), pedido.getCliente().getCodigo(), pedido.getCliente().getNome(),
                    pedido.getfPgto().getDescricao(), formatoMoeda(pedido.getvTotal()), formatoMoeda(pedido.getdGerente()), formatoMoeda(pedido.getdFormaPgto()), formatoMoeda(pedido.getdEspecial()), formatoMoeda(pedido.getaGerente()),
                    formatoMoeda(pedido.getaFormaPgto()), formatoMoeda(pedido.getVale()), formatoMoeda(pedido.getvFinal())
                });
            }

            DefaultTableCellRenderer centralizado = new DefaultTableCellRenderer();
            centralizado.setHorizontalAlignment(SwingConstants.CENTER);

            tabelaVendas.getColumnModel().getColumn(0).setCellRenderer(centralizado);
            tabelaVendas.getColumnModel().getColumn(1).setCellRenderer(centralizado);
            tabelaVendas.getColumnModel().getColumn(3).setCellRenderer(centralizado);
            tabelaVendas.getColumnModel().getColumn(6).setCellRenderer(centralizado);
            tabelaVendas.getColumnModel().getColumn(7).setCellRenderer(centralizado);
            tabelaVendas.getColumnModel().getColumn(8).setCellRenderer(centralizado);
            tabelaVendas.getColumnModel().getColumn(9).setCellRenderer(centralizado);
            tabelaVendas.getColumnModel().getColumn(10).setCellRenderer(centralizado);
            tabelaVendas.getColumnModel().getColumn(11).setCellRenderer(centralizado);
            tabelaVendas.getColumnModel().getColumn(12).setCellRenderer(centralizado);
            tabelaVendas.getColumnModel().getColumn(13).setCellRenderer(centralizado);
            tabelaVendas.getColumnModel().getColumn(14).setCellRenderer(centralizado);

        } catch (IOException | SQLException ex) {
            Mensagens.msgErro("erro ao autalizar tabela\n" + ex.getMessage());
        } catch (java.lang.NullPointerException e) {
            /*
             ocorre esse erro as vezes ao ordenar a tabela
             */
        }
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnGerar;
    private javax.swing.JComboBox cbFPgto;
    private javax.swing.JCheckBox cbOrcamentos;
    private javax.swing.JCheckBox cbPedidos;
    private javax.swing.JComboBox cbVendedor;
    private com.toedter.calendar.JDateChooser dataFinal;
    private com.toedter.calendar.JDateChooser dataInicial;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanelMedia;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTabbedPane jTabbedPane;
    private javax.swing.JPanel jpCresAnual;
    private javax.swing.JPanel jpDados;
    private javax.swing.JPanel jpDepempenho;
    private javax.swing.JPanel jpGeral;
    private javax.swing.JPanel jpGrafMedia;
    private javax.swing.JPanel jpGrafRentabilidade;
    private javax.swing.JPanel jpGrafRentabilidadeValor;
    private javax.swing.JPanel jpGrafVendas;
    private javax.swing.JPanel jpPedidos;
    private javax.swing.JPanel jpTabela;
    private javax.swing.JPanel jpVendas;
    private javax.swing.JLabel lbDiasUteis;
    private javax.swing.JLabel lbSoma;
    private javax.swing.JLabel lbTotal;
    private javax.swing.JTable tabelaVendas;
    private javax.swing.JTable tabelaVendedores;
    private javax.swing.JTextField txAcrescimoBoleto;
    private javax.swing.JTextField txDiasTrabalhados;
    private javax.swing.JTextField txDiasUteis;
    private javax.swing.JTextField txEstimativa;
    private javax.swing.JTextField txMediaDiaria;
    private javax.swing.JTextField txMeta;
    private javax.swing.JTextField txRentabilidade;
    private javax.swing.JTextField txTotalCusto;
    private javax.swing.JTextField txTotalDescontos;
    private javax.swing.JTextField txTotalVale;
    private javax.swing.JTextField txTotalVenda;
    private javax.swing.JTextField txValorLucro;
    // End of variables declaration//GEN-END:variables
}
